目前考虑公司的设备通信时,需要对通信协议加密提供安全性,首先考虑有以下几点需求:
1. 因为不希望被抓包看到消息内容,所以需要能双向解密的
2. 设备与服务的所有消息都会加密,所以性能越高越好
所以目前就优先考虑使用对称加密,相比较非对称加密,与设备通信要求能双方都能写入和解密,并且对称加密的性能会好很多。对称加密 AES的 相对于 DES 和 3DES 密钥长度更长,安全性也更高,所以我们选择使用AES加密。
AES我们使用 ECB 模式,这种模式不需要使用向量,使用更加简单一些,密钥长度选择最长的256位,因为AES加密是以块为单位进行运算,通常一个块都是 16 位,我们选择 pkcs7 作为填充算法,这个算法主要是:
如果不满16位需要补齐到16位,如果刚好16位则需要填入完整的16位以保证数据中一定会有填充的字符,而且填充字符就是需要填充数量的ascii码值,这样在丢弃填充时直接读取最后一位的填充字符就知道需要舍弃多少长度的数据了
AES加密结果是一个位串,我们的消息协议是json的文本协议,所以加密结果在传递时,我们会将消息统一做base64编码转换成字符串进行传输,无可避免json文本协议和base64会将消息变得冗长,但是得益于运营商的流量资费越来