Java 常见编码和加密方案

admin 21天前 1213

Base64

Java 8之后在java.util包中便集成了,Base64编码和解码,支持UrlEncode 和 UrlDecode,与sun.mis c套件和Apache Commons Codec所提供的Base64编解码器来比较的话,Java 8提供的Base64拥有更好的效能。

//编码
Base64.getEncoder().encodeToString("测试".getBytes(StandardCharsets.UTF_8));
//编码
new String(Base64.getEncoder().encode("测试".getBytes(StandardCharsets.UTF_8)));
//解码
new String(Base64.getDecoder().decode("5rWL6K+V5YaF5a65"), StandardCharsets.UTF_8);
//Url编码
Base64.getUrlEncoder().encodeToString("https://www.4gml.com".getBytes(StandardCharsets.UTF_8));
//Url解码
new String(Base64.getUrlDecoder().decode("5rWL6K+aHR0cHM6Ly93d3cuNGdtbC5jb20="),StandardCharsets.UTF_8);

MD5

介绍

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据运算为另一固定长度值。MD5加密是不可逆的,所以除了暴力破解一般逆序算法是得不到结果的。

特点

  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  2. 容易计算:从原数据计算出MD5值很容易。
  3. 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  4. 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据是非常困难的。

使用

一:使用spring框架自带的DigestUtils

DigestUtils.md5DigestAsHex(str.getBytes());//str为待加密的字符串

二:使用java.security.MessageDigest

    public  String Md5(String str) {
        try {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            byte[] digest = md5.digest(str.getBytes());
            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]);
            }
            return new String(sb);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }
最后于 19天前 被admin编辑 ,原因:
最新回复 (0)
全部楼主
返回
发新帖