Java:加密算法(更新中)

文章目录

  • MD5加密
  • 参考文献

2023-6-20 14:47:41 汇集中,不过半年多了,只记了个MD5

MD5加密

MD5严格来讲都不算是一种加密算法,它其实是HASH算法的一种。根据其输出值,不能得到原始的明文,即其过程是不可逆的。

因此不存在解密MD5的算法,只能以穷举法一个一个撞,现在网上的一些MD5在线解密的网站就是这么干的,保存一些常用组合的MD5加密映射就完了。

MD5加密之后的位数有两种类型:16位和32位,默认使用32位,16位实际上是从32位字符串中取中间的第9位到第24位,用Java来讲,就是:

String md5_16 = md5_32.substring(8, 24);

上一段从参考文献2抄的代码:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5 {
    public static void main(String[] args) {
        // 需要加密的字符串
        String src = "123456";
        try {
            // 加密对象,指定加密方式
            MessageDigest md5 = MessageDigest.getInstance("md5");
            // 准备要加密的数据
            byte[] b = src.getBytes();
            // 加密
            byte[] digest = md5.digest(b);
            // 十六进制的字符
            char[] chars = new char[] { '0', '1', '2', '3', '4', '5',
                 '6', '7' , '8', '9', 'A', 'B', 'C', 'D', 'E','F' };
            StringBuffer sb = new StringBuffer();
            // 处理成十六进制的字符串(通常)
            for (byte bb : digest) {
                sb.append(chars[(bb >> 4) & 15]);
                sb.append(chars[bb & 15]);
            }
            // 打印加密后的字符串
            System.out.println(sb);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

参考文献

  1. 三分钟了解MD5加密后16位与32位的区别
  2. Java实现简单的MD5加密

你可能感兴趣的:(Java,java)