aes encryption - 内容大小不是16字节的倍数

时间:2014-03-08 04:49:40

标签: java ios iphone aes

我有一个数据,他接近735字节,当我加密并发送到服务器服务器能够加密,直到说720(16的倍数),但没有超出那个,如何解决这个问题,所有我需要是一种能够解决这个问题的解决方案。

NSMutableData *cipherData = [NSMutableData dataWithLength: content.length + kCCBlockSizeAES128];
    CCCryptorStatus
    result = CCCrypt(((shouldEncrypt)?kCCEncrypt:kCCDecrypt), // operation
                     kCCAlgorithmAES128, // Algorithm - AES128 means the block size, not the keysize 
                     kCCOptionECBMode, // options
                     key.bytes, // key
                     kCCKeySizeAES256, // keylength
                     NULL,// iv
                     content.bytes, // dataIn
                     content.length, // dataInLength,
                     cipherData.mutableBytes, // dataOut
                     cipherData.length, // dataOutAvailable
                     &outLength); // dataOutMoved

1 个答案:

答案 0 :(得分:1)

在选项中,(二进制)或kCCOptionPKCS7Padding标志到kCCOptionECBMode标志。

这将自动将最后一个块填充到块大小。请注意,如果存在整数个块,这也会添加一个完整的块(否则无法将数据与填充区分开)。