源码下载
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 下载