Android(安卓)采用MD5注册登录,加密解密
16lz
2021-12-04
源码下载
https://download.csdn.net/download/qq_31939617/10485341 下载
MainActivity.class
package com.example.sz.md5demo;import android.content.Context;import android.content.SharedPreferences;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private static final String TAG = "MainActivity"; EditText registerNumber; EditText registerPassword; Button register; EditText loginNumber; EditText loginpassword; Button login; private MD5Util md5Util = new MD5Util(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } public void initView() { registerNumber = findViewById(R.id.register_number); registerPassword = findViewById(R.id.register_password); register = findViewById(R.id.btn_register); register.setOnClickListener(this); loginNumber = findViewById(R.id.login_number); loginpassword = findViewById(R.id.login_password); login = findViewById(R.id.btn_login); login.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_register: String number1 = registerNumber.getText().toString().trim(); String password1 = registerPassword.getText().toString().trim(); if (number1.isEmpty() || number1 == null || password1.isEmpty() || password1 == null) { Toast.makeText(MainActivity.this, "不能为空", Toast.LENGTH_SHORT).show(); } else { //加密 String password = md5Util.encrypt(password1); Log.e(TAG, "onClick: -----------------password:" + password); SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("number", number1); editor.putString("password", password); editor.commit(); Toast.makeText(this, "--注册成功--", Toast.LENGTH_SHORT).show(); } break; case R.id.btn_login: String number2 = loginNumber.getText().toString().trim(); String password2 = loginpassword.getText().toString().trim(); if (number2.isEmpty() || number2 == null || password2.isEmpty() || password2 == null) { Toast.makeText(MainActivity.this, "不能为空", Toast.LENGTH_SHORT).show(); } else { // 1、获取Preferences SharedPreferences sp = getSharedPreferences("user", 0); // 2、取出数据 String num = sp.getString("number", ""); String pas = sp.getString("password", null); String str = md5Util.encrypt(password2); Log.e(TAG, "onClick: -------number2:"+number2+"---str:" + str); Log.e(TAG, "onClick: -------num:"+num+"---pas:" + pas); if (number2.equals(num) && str.equals(pas)) { Toast.makeText(this, "--登录成功--", Toast.LENGTH_SHORT).show(); } } break; default: break; } }}
MD5Util.class
package com.example.sz.md5demo;import android.util.Log;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * 采用MD5加密解密 */public class MD5Util { private static final String TAG = "MD5Util"; /*** * MD5加码 生成32位md5码 */ public static String string2MD5(String inStr) { Log.e(TAG, "string2MD5: -------------------------"); MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) { System.out.println(e.toString()); e.printStackTrace(); return ""; } char[] charArray = inStr.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++) byteArray[i] = (byte) charArray[i]; byte[] md5Bytes = md5.digest(byteArray); StringBuffer hexValue = new StringBuffer(); for (int i = 0; i < md5Bytes.length; i++) { int val = ((int) md5Bytes[i]) & 0xff; if (val < 16) hexValue.append("0"); hexValue.append(Integer.toHexString(val)); } return hexValue.toString(); } /** * 加密解密算法 执行一次加密,两次解密 */ public static String convertMD5(String inStr) { Log.e(TAG, "convertMD5: -------------------------"); char[] a = inStr.toCharArray(); for (int i = 0; i < a.length; i++) { a[i] = (char) (a[i] ^ 't'); } String s = new String(a); return s; } /*// 测试主函数 public static void main(String args[]) { String s = new String("tangfuqiang"); System.out.println("原始:" + s); System.out.println("MD5后:" + string2MD5(s)); System.out.println("加密的:" + convertMD5(s)); System.out.println("解密的:" + convertMD5(convertMD5(s))); }*/ public String encrypt(String str) { // String s = new String(str); // MD5 String s1 = string2MD5(str); //加密 String s2 = new String(s1); //String s = new String(str); //Log.e(TAG, "show: ------------原始:" + s); //Log.e(TAG, "show: ------------MD5后:" + string2MD5(s)); //Log.e(TAG, "show: ------------加密的:" + convertMD5(s)); // Log.e(TAG, "show: ------------解密的:" + convertMD5(convertMD5(s))); // return convertMD5(convertMD5(s)); return convertMD5(s2); }}
源码下载
https://download.csdn.net/download/qq_31939617/10485341 下载
更多相关文章
- Android中base64加密后的字符串带有“\n”导致出错的问题解决
- 关于Android(安卓)混淆的内容总结
- Android(安卓)学习 设备管理器勾选后不能再取消了
- Android关于短信加密
- Android关于短信加密
- Android(安卓)AES加密算法及其实现
- Android应用安全风险与防范
- Android(安卓)解析jwt遇到java.lang.IllegalArgumentException:
- 在做Android中GIF遇到不能显示的问题