MD5加密、Base64加密解密

MD5加密、Base64加密解密

以后可能经常用到MD5的加密类。写下来以后来用

public class MD5Util {
    private MD5Util() {
    }
    //设置字符集
    private static final String ENCODEONG = "UTF-8";
    //增加盐值 salt 普通字符串 增加破译的难度
    private static final String SALT="*&^%FIGHTEN*&6";

    public static String encodeStr(String sourceStr) {
        Objects.requireNonNull(sourceStr);
        //创建信息摘要对象
        MessageDigest messageDigest = null;
        try {
            //创建实例设置算法格式
            messageDigest = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        //在加密之前增加盐值到字符串
        sourceStr = sourceStr+SALT;
        //将加密的字符串提交到messageDigest
        messageDigest.update(sourceStr.getBytes(Charset.forName(ENCODEONG)));
        //执行加密
        byte[] digest = messageDigest.digest();
        //将字节数组转换BigInteger(参数 -1转换成负数 0转换成0,1转换成正数)
        BigInteger bigInteger = new BigInteger(1,digest);
        //转换成16进制
        String string = bigInteger.toString(16);
        //将结果全部转换成大写
        String result = string.toUpperCase();
        return result;
    }

    public static void main(String[] args) {
        String pass = "1234";
        System.out.println(encodeStr(pass));
    }
}

public class PassDemo {
    private static final String ENCODING ="UTF-8";
    public static void main(String[] args) {
//        String pass = "你真好";
//        String s = userRegister(pass);
//        System.out.println(s);
        String pass = "你真好";
        boolean result = userLogin(pass);
        System.out.println(result);


    }
    public static String userRegister(String sourcePass){
        Objects.requireNonNull(sourcePass);
        //Base64 编码 获得编码器
        Base64.Encoder encoder = Base64.getEncoder();
        //加密处理,设置编码格式ENCODING
        String string = encoder.encodeToString(sourcePass.getBytes(Charset.forName(ENCODING)));
        return string;
    }
    public static boolean userLogin(String sourecePass){
        Objects.requireNonNull(sourecePass);
        //模仿从后台数据库拿到的密码进行解密与sourecePass进行对比
        String encodePass ="5L2g55yf5aW9";
        //获得解码器
        Base64.Decoder decoder = Base64.getDecoder();
        //将密码放入解码器得到byte数组
        byte[] decode = decoder.decode(encodePass);
        //将byte数组转换成String并且配置编码格式
        String decodePass = new String(decode,Charset.forName(ENCODING));
        //将解密的String字符串和前台传来的字符串进行对比
        if(!decodePass.endsWith(sourecePass)){
            return false;
        }
        return true;
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵相机-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值