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

用户头像
文智
关注
发布于: 2020 年 12 月 06 日

第二题 用户密码验证函数



设计思路:

  1. 实现语言:Java

  2. 将用户ID和用户明文密码拼接为源字符串,通过MessageDigest进行SHA256编码

  3. 将编码后的字符串与用户密码密文比较,得出结果



/**
* 将byte数组表示为十六进制格式的字符串
* @param bytes
* @return
*/
public String bytes2Hex(byte[] bytes) {
StringBuffer stringBuffer = new StringBuffer();
String hex = null;
for (int i = 0; i < bytes.length; ++i) {
hex = Integer.toHexString(bytes[i] & 0xFF);
stringBuffer.append(hex.length() == 1 ? "0" + hex : hex);
}
return stringBuffer.toString();
}
/**
* SHA256加密
* @param 明文字符串
* @return 加密后的报文
*/
public String getSHA256Str(String str) {
MessageDigest messageDigest;
String encoded = "";
try {
messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes("UTF-8"));
encoded = bytes2Hex(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return encoded;
}
/**
* 校验用户密码
* @param userId 用户ID
* @param password 明文密码
* @param savedPassword 数据库保存的密文密码
* @return
*/
public boolean checkPW(String userId, String password, String savedPassword) {
String encodedPassword = getSHA256Str(userId + "-" + password);
return encodedPassword.equals(savedPassword);
}



发布于: 2020 年 12 月 06 日阅读数: 13
用户头像

文智

关注

还未添加个人签名 2018.11.29 加入

还未添加个人简介

评论

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