介绍
介绍
今天福哥带着大家来给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加密过的密文进行解密,解密需要提供加密时候使用的私钥才行
使用
代码
效果
总结
今天福哥带着童鞋们完成了TFSpring框架的新功能——AES加密算法对象TFAES的开发,有了这个安全系数很高的可逆加密算法之后,我们就可以设计更为安全的程序了。
不仅如此,还可以对接很多使用AES算法的大厂功能了。
下一课,福哥将带着大家实现SHA1加密算法和URL编码解码的功能,敬请期待~~