aes默认填充算法 mysql_AES模式和填充

AES加密通常涉及固定大小的分组,如128位。对于非16字节的数据,需要选择合适的模式,如CBC模式,配合PKCS#7填充。iOS设备推荐使用CBC模式和PKCS#7填充。初始化向量(IV)在链模式中至关重要,确保加密安全性。AES提供128、192和256位密钥,推荐使用128位。
摘要由CSDN通过智能技术生成

AES是分组加密,也就是说它是对固定大小的分组数据进行处理。AES每次处理的128位(16字节)的输入。不过,大多数要加密的的数据都不是16字节长。为了解决这个问题,需要选择合适的模式。

模式是用来将数据分组串起来从而使得任意数据都能加密的算法。模式适用于任何分组的加密算法,包括AES。

如果你不想了解AES模式的细节,那就相信我:对iOS设备而言是CBC以及PKCS#7填充

最简单的模式是电子密码本(ECB)。但千万不要在iOS应用中使用该模式。

最常见的分组加密模式是密码分组链模式(CBC)。

填充的作用是在加密前将普通文本的长度扩展到需要的长度。关键在于填充的数据能够在解密后正确的移除。

实现方法有好多种,但iOS支持一种叫PKCS#7的填充方式。这种方式由选项kCCOptionPKCS7Padding来定义

CBC是最常用的加密模式,因此最方便跟其他系统交换数据。这也是苹果安全团队推荐的模式。

初始化向量

在链模式如CBC中,每个分组都会影响到下一个分组的加密。这就是为了保证两个相同的普通文本分组不会生成相同的密文分组。

第一个分组是个特列,因为它前面再没有其他的分组了。链模式允许定义一个额外的称为初始化向量(Initialization Vector, IV)的分组来开始这个链。这个通常会被标成可选的。但你总是需要提供一个。否则,它会用一个全是0的分组,那样会让你的数据容易受到特定的攻击的侵害。

CCCryptorStatus CCCrypt(

CCOperation op, /* kCCEncrypt, etc. */

CCAlgorithm alg, /* kCCAlgorithmAES128, etc. */

CCOptions options, /* kCCOptionPKCS7Padding, etc. */

const void *key,

size_t keyLength,

const void *iv, /* optional initialization vector */

const void *dataIn, /* optional per op and alg */

size_t dataInLength,

void *dataOut, /* data RETURNED here */

size_t dataOutAvailable,

size_t *dataOutMoved)

__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);

AES提供了三种密钥长度:128位,192位和256位。

推荐使用AES-128位

在内部实现上,AES只是提供一个接收固定长度密钥和16字节大小的分组,然后生成另外一个不同的16字节大小的分组的数学函数。

AES使用固定长度的密钥,而不是变长密码。必须将密码转成密钥才能在AES中使用它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值