作业 -11- 安全、高可用
发布于: 2020 年 08 月 26 日
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
package com.youzhicai.yingshang.business.controller;import java.security.MessageDigest;import java.util.UUID;/** * @Description 密码工具 */public class PasswordUtil { public static Boolean checkPW(String account, String plainPW, String cipherPW) { //通过account获取数据库存储的salt String salt = ""; return md5(plainPW, salt).equals(cipherPW); } //传一个字符串过来经过md5处理返回一个字符串 public static String md5(String s, String salt) { try { s += salt; //MessageDigest是封装md5算法的工具对象还支持SHA算法 MessageDigest md = MessageDigest.getInstance("MD5"); //通过digest拿到的任意字符串,得到的bates都是等长的 byte[] bytes = md.digest(s.getBytes("utf-8")); //返回的toHex通过下面方法再处理 return toHex(bytes); } catch (Exception e) { throw new RuntimeException(e); } } private static String toHex(byte[] bytes) { //把toHex的字符串把二进制转换成十六进制 final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray(); StringBuilder ret = new StringBuilder(bytes.length * 2); //循环判断是为了补位操作 for (int i = 0; i < bytes.length; i++) { ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]); ret.append(HEX_DIGITS[bytes[i] & 0x0f]); } return ret.toString(); } public static String salt() { //使用UUID通用唯一识别码,取第一个-前面的值 UUID uuid = UUID.randomUUID(); String[] arr = uuid.toString().split("-"); return arr[0]; }}
划线
评论
复制
发布于: 2020 年 08 月 26 日阅读数: 41
梦子说
关注
还未添加个人签名 2018.12.01 加入
还未添加个人简介
评论