架构师训练营第十一周作业
第二题 用户密码验证函数
设计思路:
实现语言:Java
将用户ID和用户明文密码拼接为源字符串,通过MessageDigest进行SHA256编码
将编码后的字符串与用户密码密文比较,得出结果
版权声明: 本文为 InfoQ 作者【文智】的原创文章。
原文链接:【http://xie.infoq.cn/article/4a42ab89966fd2a2a30337029】。未经作者许可,禁止转载。
第二题 用户密码验证函数
设计思路:
实现语言:Java
将用户ID和用户明文密码拼接为源字符串,通过MessageDigest进行SHA256编码
将编码后的字符串与用户密码密文比较,得出结果
/** * 将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); }
版权声明: 本文为 InfoQ 作者【文智】的原创文章。
原文链接:【http://xie.infoq.cn/article/4a42ab89966fd2a2a30337029】。未经作者许可,禁止转载。
还未添加个人签名 2018.11.29 加入
还未添加个人简介
促进软件开发及相关领域知识与创新的传播
评论