AES / CFB8 IV尺寸

时间:2013-01-30 09:12:23

标签: ios macos encryption cryptography aes

AFAIK,CFB8模式的块大小为1byte。所以我可以诱导IV也是1字节长度。 但是,当我进行测试时,只将1个字节的相同iv传递到公共加密创建加密和解密函数,加密和解密消息不匹配的函数。

所以我认为API应该使用超过1个字节作为IV。我想知道为什么?我的理解有什么不妥吗?

CCCryptorStatus result = CCCryptorCreateWithMode(operation,
                                                 kCCModeCFB8,
                                                 kCCAlgorithmAES128,
                                                 ccNoPadding,
                                                 iv.bytes,
                                                 key.bytes,
                                                 key.length,
                                                 NULL,
                                                 0,
                                                 0,
                                                 0,
                                                 &_cryptor);

if (result == kCCSuccess)
    result = CCCryptorUpdate(_cryptor,
                             data.bytes,
                             data.length,
                             cipherData.mutableBytes,
                             cipherData.length,
                             &outLength);

if (result == kCCSuccess)
    result = CCCryptorFinal(_cryptor,
                            cipherData.mutableBytes,
                            cipherData.length,
                            &outLength);

if (result == kCCSuccess)
    result = CCCryptorRelease(_cryptor);

2 个答案:

答案 0 :(得分:4)

IV大小必须与对称算法块大小匹配。因此,对于AES,您应该具有16字节的IV。

CFB-8具有一个字节的移位大小。它与密码的块大小无关。

答案 1 :(得分:3)

它没有1字节的块大小,它只是每1字节重新同步一次。 IV实际上是16个字节(对于AES)。