写点什么

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

用户头像
子豪sirius
关注
发布于: 2020 年 08 月 26 日



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



/**
* <p>系统使用SHA-256加密用户密码</p>
*
* @param str 需要加密的字符串
* @return
*/
private static String getSHA256(String str) {
if (str == null || str.equals(""))
return null;
String encodeStr = "";
try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes());
encodeStr = byte2Hex(messageDigest.digest());
}catch (NoSuchAlgorithmException exception){
// 异常处理
}
return encodeStr;
}
private static String byte2Hex(byte[] bytes) {
StringBuffer stringBuffer = new StringBuffer();
for (byte aByte : bytes) {
if(aByte < 16)
stringBuffer.append("0");
stringBuffer.append(Integer.toHexString(aByte & 0xFF));
}
return stringBuffer.toString();
}
/**
*
*
* @param userID 用户ID
* @param plainTextPW 用户密码明文
* @param ciphertextPW 用户密码密文
* @return
*/
public static boolean checkPW(String userID, String plainTextPW, String cipherTextPW) {
//使用userID + plainTextPW构建字符串做SHA-256单向散列
String encodePlainTextPW = getSHA256(userID + plainTextPW);
return cipherTextPW.equals(encodePlainTextPW);
}



用户头像

子豪sirius

关注

还未添加个人签名 2018.05.03 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
请添加“极客大学架构师训练营”标签,便于分类
2020 年 08 月 27 日 09:52
回复
没有更多了
架构师训练营第十一周作业