首页 > 技术知识 > 正文

  很多项目当中,由于数据的保密性,是不能使用透传的,大部分会把数据加密之后用密文进行数据传输,然后接收方对密文进行解密后,对数据进行解析,AES加密就是常用的加密方式。   我也是第一次使用AES加密方式进行数据通讯,这些加密方式大部分在网上都可以找到一些写好的库去直接使用,AES加密也一样,但是这些库并不是所有的都可以用,而且如果对AES加密不太了解的话,可能有不少接口也看不太懂,下面我给大家总结一下。   AES加密的模式有五种,分别是CBC、EBC、CTR、OCF、CFB,其中CBC和EBC是最常用的,这里就重点说下这两种模式:EBC模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密,而CBC模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。所以CBC模式的加密更加复杂,当然也就更不容易被解密。   AES加密的加密位数分为128位和256位,这其实就是加密秘钥的位数,128位的AES加密,秘钥就为16个字节,256位的秘钥位32个字节。   最后AES加密需要给数据做填充,待加密数据必须16个字节对齐,不足16个字节的需要做数据填充,填充方式主要为PKCS7Padding/PKCS5Padding/ZeroPadding三种。   ZeroPadding填充方式为数据长度不对齐时使用0填充,否则不填充。   PKCS7Padding填充方式为如果数据长度需要填充n个字节才对齐,那么填充n个字节,每个字节都是n;如果数据本身就已经对齐了,则填充一块长度为块大小的数据,每个字节都是块大小,这里的块大小不是16就是32,取决于使用的加密秘钥位数。   PKCS5Padding和PKCS7Padding比较像,只不过块大小固定为8字节。

猜你喜欢