架构师训练营第十一周作业
发布于: 2020 年 08 月 24 日
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
import java.math.BigInteger;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class checkCredentials { public static boolean checkPassword(String userId, String pwdPlainText, String pwdEncryptedText) { if (userId == null || pwdEncryptedText == null || pwdPlainText == null) { return false; } return pwdEncryptedText.equals(encode(userId, pwdPlainText, "MD5")); } private static String encode(String userId, String plainText, String hashAlgorithm) { // encryption algorithm String concatenatedInput = userId + plainText; byte[] plainTextWithSaltBytes = concatenatedInput.getBytes(); try { MessageDigest md = MessageDigest.getInstance(hashAlgorithm); md.update(plainTextWithSaltBytes); byte[] encodedInput = md.digest(); BigInteger bigInt = new BigInteger(1, encodedInput); StringBuilder hashText = new StringBuilder(bigInt.toString(16)); // Now we need to zero pad it if you actually want the full 32 chars. while(hashText.length() < 32 ){ hashText.insert(0, "0"); } return new String(hashText); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { String userID = "admin"; String plainText = "carmelo"; String encryptedText = "7225cf3eab8ce407bcb5376e2a2f2028"; if (checkPassword(userID, plainText, encryptedText)) { System.out.println("Password Match"); } else { System.out.println("Username or Password Error!"); } }}
划线
评论
复制
发布于: 2020 年 08 月 24 日阅读数: 85
Melo
关注
还未添加个人签名 2019.09.17 加入
还未添加个人简介
评论