Gear with Code Java Engineer

java.util.Base64类

2019-07-10

今天学习了Base64类的用法,它主要可以用来对字节进行加密。

使用Base64类的Encoder方法可以对字符串进行加密,Decoder方法可以对加密的字符串进行解密。单纯的使用这两个方法并不能取得加密的效果,因为这个算法是公开的。比较安全的方法是使用此类和其他方法配合使用。例如多次加密,加盐值等等,这样可以提高安全性,增加解密难度。

举个例子,下面的代码使用多次加密和加盐值的方法对字符串进行了加密。

package javademo;

import java.util.Base64;

public class JavaDemo {
    public static void main(String[] args) {
        String code = "123456789";
        String coded = TestCoder.enCode(code);
        System.out.println(coded);
        System.out.println(TestCoder.deCode(coded));
    }
}

class TestCoder {
    static final int count = 5;// 加密次数
    static final String salt = "{salt}";// 盐值

    /**
     * 加密
     * 
     * @param str 要加密的字符串
     * @return 加密后的字符串
     */
    public static String enCode(String str) {
        str += salt;
        for (int i = 0; i < count; ++i) {
            str = Base64.getEncoder().encodeToString(str.getBytes());
        }
        return str;
    }

    /**
     * 解密
     * 
     * @param str 要解密的字符串
     * @return 解密后的字符串
     */
    public static String deCode(String str) {
        for (int i = 0; i < count; ++i) {
            str = new String(Base64.getDecoder().decode(str));
        }
        return str.replaceAll("\\{\\w+\\}", "");
    }
}

运行后的结果为: 密文是:VmtaYVUxTnRWbkpPVlZaWFZrVndVRnBYTVdwTlZuQlZWR3M1YUZJd2NFcFdWM0J5VUZFOVBRPT0=
明文是:123456789


上一篇 java比较器

Comments

Content