同福

做个java框架(5)——AES加密解密的实现【20210103】

介绍

介绍

今天福哥带着大家来给TFSpring框架添加一个AES算法的功能对象。AES算法是一种可逆的无损加密算法,和Base64不同之处在于,AES可以通过设置私钥提高安全性,而Base64算法就没有办法设置私钥。

很多即时通软件的通讯都是采用AES算法进行密文传输的,比如我们熟知的微信公众号、微信小程序等等。

在一些激活链接的功能设计里面也是使用AES作为加密算法的,比如注册账号的激活电子邮件等等。

很多提供AES算法的厂商都会在自己的应用场景里面进行一些小的改良,这种我们以后做对接的时候会给大家讲解的。

TFAES

路径

TFSpring.text.encoding.TFAES

代码

setDefaultCharset

public void setDefaultCharset(Charset charset){
    defaultCharset = charset;
}

encrypt

public String encrypt(String data, byte[] key, byte[] iv){
    try{
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        TFBase64 base64 = new TFBase64();
        byte[] dataBytes, encBytes;
        String dataBase64;

        dataBytes = data.getBytes(defaultCharset);
        cipher.init(Cipher.ENCRYPT_MODE, generateKey(key), generateIV(iv));
        encBytes = cipher.doFinal(dataBytes);
        base64.setDefaultCharset(defaultCharset);
        dataBase64 = base64.encodeToString(encBytes);

        return dataBase64;
    }
    catch (Exception e){

    }

    return null;
}
public String encrypt(String data, byte[] key){

    return encrypt(data, key, ("0123456789abcdef").getBytes());
}

decrypt

public String decrypt(String data, byte[] key, byte[] iv){
    try{
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        TFBase64 base64 = new TFBase64();
        byte[] dataBytes, decBytes;

        base64.setDefaultCharset(defaultCharset);
        dataBytes = base64.decode(data);
        cipher.init(Cipher.DECRYPT_MODE, generateKey(key), generateIV(iv));
        decBytes = cipher.doFinal(dataBytes);

        return new String(decBytes, defaultCharset);
    }
    catch (Exception e){

    }

    return null;
}
public String decrypt(String data, byte[] key){

    return decrypt(data, key, ("0123456789abcdef").getBytes());
}

讲解

TFAES

setDefaultCharset

设置默认的编码方式,因为这里面会将AES转换的数据进行Base64编码处理,而Base64编码是需要知道数据的字符编码格式的

encrypt

将输入数据混合私钥进行AES算法的加密,加密后的密文是相对安全的

decrypt

将使用AES加密过的密文进行解密,解密需要提供加密时候使用的私钥才行

使用

代码

0f3aa065d1c9ad20.jpg

效果

534897f2525ca73f.jpg

总结

今天福哥带着童鞋们完成了TFSpring框架的新功能——AES加密算法对象TFAES的开发,有了这个安全系数很高的可逆加密算法之后,我们就可以设计更为安全的程序了。

不仅如此,还可以对接很多使用AES算法的大厂功能了。

下一课,福哥将带着大家实现SHA1加密算法和URL编码解码的功能,敬请期待~~