架构师训练营作业 -- Week 11
发布于: 2020 年 09 月 08 日
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
package com.example.demo;import java.util.HashMap;import java.util.Map;import org.springframework.security.crypto.bcrypt.BCrypt;public class BCryptDemo { // salt 在实际应用中应当以明文形式存储到数据库中,并且与用户一一对应。 private static Map<String, String> userIdSaltMap; /** * 此方法验证密码明文<code>password</code>经过加盐BCrypt算法计算后得到的密码哈希值是否与传入的<code>passwordHash</code>一致。 * @param userId * @param password * @param passwordHash * @return 哈希值一致: true, 否则false */ boolean checkPW(String userId, String password, String passwordHash) { String hash = BCrypt.hashpw(password, userIdSaltMap.get(userId)); return passwordHash.equals(hash); } public static void main(String[] args) { BCryptDemo demo = new BCryptDemo(); String johnHash = BCrypt.hashpw("john123", userIdSaltMap.get("john")); assert(demo.checkPW("john", "john123", johnHash)); } // initialize salt map { userIdSaltMap = new HashMap<>(); userIdSaltMap.put("john", BCrypt.gensalt()); userIdSaltMap.put("smith", BCrypt.gensalt()); }}
划线
评论
复制
发布于: 2020 年 09 月 08 日阅读数: 44
吴炳华
关注
还未添加个人签名 2020.04.08 加入
还未添加个人简介
评论