5 回答
TA贡献2条经验 获得超7个赞
先说登陆页面的应用,比如用户创建了密码,你把密码在后台做MD5计算,然后存在数据库里,登陆时,计算前台输入密码的MD5值,和数据库中的做比较,相同则验证成功,完成登陆。
Message Digest Algorithm MD5,中文名是信息摘要算法,严格来说它不属于加密算法,但在实际开发中,由于MD5算法的特性,从原数据计算MD5值很容易,原数据修改的即使很小,MD5值得差异都很大,而且就算已经知道了MD5值,利用对撞很难得到原数据。
TA贡献17条经验 获得超4个赞
基本概念楼上说的差不多了,简单说一下实现过程:
先建一个工具类,用于将字符串转换为MD5码
public class WebUtil {
/***
* MD5加密 生成32位md5码
*/
public static String string2MD5(String inStr){
MessageDigest md5 = null;
try{
md5 = MessageDigest.getInstance("MD5");
}catch (Exception e){
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();
}
}
假设密码为”123456“(md5码为:e10adc3949ba59abbe56e057f20f883e),用户名即连接数据库忽略……下面是登陆的类(当然,在实际运用中不会这么简单)
public class loginClass(){
public String loginClass(String password){
String pwdMd5 = WebUtil.string2MD5(password);
if("e10adc3949ba59abbe56e057f20f883e".equals(pwdMd5)){
return "这里返回登陆成功的页面地址";
}else{
return "这里返回登陆失败的页面地址";
}
}
}
添加回答
举报