从零到壹学习密码学第九讲:AES 加密算法的实现

高考,再见不复遇见

作者:黎跃春

孔壹学院创始人兼CEO

黎跃春:孔壹学院创始人兼CEO,国内区块链布道先行者,通信和信息技术培养工程区块链高级授课专家。如果您有任何关于区块链的问题,可以加入区块链技术交流QQ群729666975,我们会为您一一解答。

一年一度的高考终于结束了,孔壹学院希望已经考试完毕的孩子们,放下一切,好好玩耍。考试是个点,生命是条线。没有人因为考试赢得所有,也没有人因为考试输掉一生。不管考好考坏,爸妈都等你回家吃饭,你们是最棒的。

高考加油!

从零到壹学习密码学为一个系列,一共20讲,包括初识密码学、Hash 函数、对称加密算法、数字签名、椭圆曲线加解密、公钥基础设施( PKI )、零知识证明、随机数等,为大家详尽的介绍密码学的学习过程。今天我们将为大家介绍第七讲:DES、3DES 加密算法的调用。话不多说,马上开启我们的密码学学习之旅。

资料获取,添加莉莉微信kongyixueyuan。

孔壹学院

AES加密常用的概念

加密模式

ECB模式全称Electronic Codebook模式,译为电子密码本模式

CBC模式全称Cipher Block Chaining模式,译为密文分组链接模式

CFB模式全称Cipher FeedBack模式,译为密文反馈模式

OFB模式全称Output Feedback模式,译为输出反馈模式。

CTR模式全称Counter模式,译为计数器模式。

初始向量

当加密第一个明文分组时,由于不存在 “前一个密文分组”,因此需要事先准备一个长度为一个分组的比特序列来代替 “前一个密文分组”,这个比特序列称为初始化向量(InitializationVector),通常缩写为 IV。

填充方式

当明文长度不为分组长度的整数倍时,需要在最后一个分组中填充一些数据使其凑满一个分组长度。

NoPadding

API或算法本身不对数据进行处理,加密数据由加密双方约定填补算法。例如若对字符串数据进行加解密,可以补充\0或者空格,然后trim

PKCS5Padding

加密前:数据字节长度对8取余,余数为m,若m>0,则补足8-m个字节,字节数值为8-m,即差几个字节就补几个字节,字节数值即为补充的字节数,若为0则补充8个字节的8

解密后:取最后一个字节,值为m,则从数据尾部删除m个字节,剩余数据即为加密前的原文。

加密字符串为为AAA,则补位为AAA55555;加密字符串为BBBBBB,则补位为BBBBBB22;加密字符串为CCCCCCCC,则补位为CCCCCCCC88888888。

PKCS7Padding

PKCS7Padding 的填充方式和PKCS5Padding 填充方式一样。只是加密块的字节数不同。PKCS5Padding明确定义了加密块是8字节,PKCS7Padding加密快可以是1-255之间。

实现AES 加密和解密

使用CBC模式+PKCS7 填充方式实现AES的加密和解密

运行结果:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608G1ZBXF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券