架构师训练营第十一周作业
发布于: 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); }
划线
评论
复制
发布于: 2020 年 08 月 26 日阅读数: 50
子豪sirius
关注
还未添加个人签名 2018.05.03 加入
还未添加个人简介
评论 (1 条评论)