java aes ctr_AES CBC和CTR加解密实例

本文详细介绍了AES加密的CBC和CTR模式,包括其工作原理和加密解密过程,并提供了使用C语言的AES CBC和CTR加解密实例代码,适合理解AES加密算法及其实现。
摘要由CSDN通过智能技术生成

http://www.metsky.com/archives/585.html

2012

AES(Advanced Encryption Standard,高级加密标准)

又叫Rijndael加密法,用来替代DES算法。常见AES加密模式有ECB、CBC、CFB、OFB和CTR等五种, CFB、OFB都带反馈,做流加密用的多,CBC和CTR、ECB多用于独立block加密,由于ECB算法有点小缺点(相同输入,相同输出,容易明文攻击),所以CBC和CTR这两种加解密方式用的较多,也是很多标准规范要求的实现算法,下面看一下这两种算法原理。

AES跟Rijndael相比有点小区别,就是使用固定块(block size)为128bits(16字节)(原Rijndael块大小更灵活),密钥长度支持128、192或256位。

一、AES CBC加解密原理

CBC加解密原理如下图所示(图片来源维基百科,参考文末地址):

71181124_1.jpg

CBC加密原理:明文跟向量异或,再用KEY进行加密,结果作为下个BLOCK的初始化向量。解密原理:使用密钥先对密文解密,解密后再同初始向量异或得到明文。

CBC需要对明文块大小进行Padding(补位),由于前后加密的相关性,只能实施串行化动作,无法并行运算。另外,CBC需要参量:密钥和初始化向量。

二、AES CTR加解密原理

71181124_2.jpg

CTR加密原理:用密钥对输入的计数器加密,然后同明文异或得到密文。解密原理:用密钥对输入计数器加密,然后同密文异或得到明文。

CTR不需要Padding,而且采用了流密钥方式加解密,适合于并行运算,CTR涉及参量:Nounce随机数、Counter计数器和密钥。Nounce随机数和Counter计数器整体可看作计数器,因为只要算法约定好,就可以回避掉串行化运算。

三、AES CBC和CTR加解密实例

下文实例使用了第三方开源源码,官方网址:http://www.gladman.me.uk/, 本文测试源码来源:http://gladman.plushost.co.uk/oldsite/AES/index.php,测试时&#x

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值