写点什么

架构师训练营 -week11 命题作业

用户头像
J.Spring
关注
发布于: 2020 年 08 月 24 日
架构师训练营 -week11 命题作业

作业:

请用你熟悉的编程语言写一个用户密码验证函数,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
用户头像

J.Spring

关注

努力支撑经历,经历支撑能力! 2018.12.03 加入

追不上BAT的人... 分享,聚焦

评论

发布
暂无评论
架构师训练营 -week11 命题作业