Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
使用MD5加密的工具类:
package com.ustc.mobilemanager.utils;
import java.security.MessageDigest;
public class MD5Utils {
/**
*
* md5加密方法
*
* @param password
* @return
*/
public static String md5Password(String password) {
// 得到一个信息摘要器
try {
MessageDigest digest = MessageDigest.getInstance("md5");
byte[] result = digest.digest(password.getBytes());
StringBuffer buffer = new StringBuffer();
// 把每一个byte做一个与运算oxff(11111111)
for (byte b : result) {
// 与运算
int number = b & 0xff;
String str = Integer.toHexString(number);
if (str.length() == 1) {
buffer.append("0");
}
buffer.append(str);
}
return buffer.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
HomeActivity中调用:
//判断是否一致
if (password1.equals(password2)) {
//一致的话,就保存密码,把对话框消掉,还要进入手机防盗页面
Editor editor = sp.edit();
editor.putString("password", MD5Utils.md5Password(password1));//保存加密后的密码
editor.commit();
dialog.dismiss();
Log.i(TAG, "一致的话,就保存密码,把对话框消掉,还要进入手机防盗页面");
Intent intent = new Intent(HomeActivity.this, LostFindActivity.class);
startActivity(intent);
}else {
Toast.makeText(HomeActivity.this, "两次输入的密码不一致!", Toast.LENGTH_SHORT).show();
return;
}
if (MD5Utils.md5Password(password1).equals(savedPassword)) {
//输入的密码是之前设置的密码,如果不相同则提示用户并返回
//把对话框消掉,进入主页面
dialog.dismiss();
Log.i(TAG, "把对话框消掉,进入手机防盗页面");
Intent intent = new Intent(HomeActivity.this, LostFindActivity.class);
startActivity(intent);
}else {
Toast.makeText(HomeActivity.this, "密码错误!", Toast.LENGTH_SHORT).show();
}