架构师训练营 -week11 命题作业
发布于: 2020 年 08 月 24 日
作业:
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
代码如下:
package com.jeff.kafka.utils;import java.security.MessageDigest;/** * @Description TODO * @Date 2020/8/24 10:05 上午 * @Author jeff.sheng */public class EncryUtils { /** * 将字节数组转为16进制字符串 * @param arr * @return */ private static String hex(byte[] arr) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < arr.length; ++i) { sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1, 3)); } return sb.toString(); } /** * 进程md5加密并转为16进制字符串 * @param str * @return */ private static String md5Hex(String str) { try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] digest = md.digest(str.getBytes()); return hex(digest); } catch (Exception e) { e.printStackTrace(); System.out.println(e.toString()); return ""; } } public static boolean checkPWD(String userID,String pwdPlaintext,String pwdCiphertext){ String pwd = getSaltMD5(userID,pwdPlaintext); return pwdCiphertext.equals(pwd); } public static String getSaltMD5(String salt, String password) { password = md5Hex(password + salt); return password; } public static void main(String[] args) { //指定salt为jeffSheng对密码明文123456进行加密 System.out.println(getSaltMD5("jeffSheng","123456")); //true 当salt为jeffSheng时看到结果为true,因为加密salt是一致的 System.out.println(checkPWD("jeffSheng","123456","c9ef20dd8652713e46dbf9bb6e0c9d56")); //false 当salt不是jeffSheng时结果为false,因为加密salt不一致 System.out.println(checkPWD("jeffSmile","123456","c9ef20dd8652713e46dbf9bb6e0c9d56")); }}
划线
评论
复制
发布于: 2020 年 08 月 24 日阅读数: 48
版权声明: 本文为 InfoQ 作者【J.Spring】的原创文章。
原文链接:【http://xie.infoq.cn/article/5576bc0f9c5d6c493f86965d6】。文章转载请联系作者。
J.Spring
关注
努力支撑经历,经历支撑能力! 2018.12.03 加入
追不上BAT的人... 分享,聚焦
评论