写点什么

架构师训练营 第十一周【作业】

用户头像
小K
关注
发布于: 2020 年 08 月 26 日

题目:请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。



使用java语言实现如下:

package week11;
import java.security.MessageDigest;
public class PwdCheckUtil {
public final static String _salt="xxxxxx";
/**
* 验证用户密码是否正确
* @param userId 用户id
* @param pwd 明文密码
* @param encPwd 密文密码
* @return boolean 密码是否正确
*/
public static boolean checkPW(String userId,String pwd,String encPwd) {
if(将3个字段进行非null且非""判断) {
return false;
}
return MD5Encrypt(userId+_salt+pwd).equals(encPwd);
}
/**MD5加密为16进制**/
public static String MD5Encrypt(String encryptStr){
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(encryptStr.getBytes("utf-8"));
return parseByte2HexStr(bytes);//将二进制转换成16进制
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**将二进制转换成16进制
* @param buf
* @return
*/
public static String parseByte2HexStr(byte buf[]) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < buf.length; i++) {
String hex = Integer.toHexString(buf[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
sb.append(hex.toUpperCase());
}
return sb.toString();
}
}



用户头像

小K

关注

还未添加个人签名 2019.11.08 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 第十一周【作业】