私の知る限り、CFB8モードのブロックサイズは1バイトです。したがって、IV も 1 バイト長であることがわかります。ただし、暗号化および復号化関数の共通暗号作成関数に 1 バイトの同じ iv を渡すテストを行うと、暗号化されたメッセージと復号化されたメッセージが一致しません。
したがって、API は IV として使用するために 1 バイト以上を取るべきだったと思います。なぜ知りたいのですか?私の理解に何か問題がありますか?
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);