如何让 CCCrypt 在另一种模式下计算 AES?
How can I make CCCrypt compute AES in another mode?
一次性加密方法CCCrypt
的签名是这样的(来自CommonCryptor.h
):
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)
参数的 None 似乎接受 CCMode
值(可能是偷偷摸摸的,因为所有枚举都是整数?)。我尝试将它与 CCOptions
参数结合使用,但无济于事;这两个枚举不是选项,不要明确组合。
那里没有明确记录,但我从网上发现的内容推测 kCCAlgorithmAES
使用的模式是 CBC。
如何更改 CCCrypt
使用的 AES 模式?
文档说:
CCCrypt
Stateless, one-shot encrypt or decrypt operation.
This basically performs a sequence of CCCrytorCreate()
[sic],
CCCryptorUpdate()
, CCCryptorFinal()
, and CCCryptorRelease()
.
现在,CCCryptorCreate
似乎也不接受模式参数;事实上,我们 see CBC 确实是硬编码的(除了允许我们使用 ECB 的那个有点武断):
/* Determine mode from options - old call only supported ECB and CBC
we treat RC4 as a "mode" in that it's the only streaming cipher
currently supported
*/
if(alg == kCCAlgorithmRC4) mode = kCCModeRC4;
else if(options & kCCOptionECBMode) mode = kCCModeECB;
else mode = kCCModeCBC;
如果我们想使用另一种模式,我们必须使用 CCCryptorCreateWithMode
。因此,不幸的是,似乎无法更改 CCCrypt
.
的模式
一次性加密方法CCCrypt
的签名是这样的(来自CommonCryptor.h
):
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)
参数的 None 似乎接受 CCMode
值(可能是偷偷摸摸的,因为所有枚举都是整数?)。我尝试将它与 CCOptions
参数结合使用,但无济于事;这两个枚举不是选项,不要明确组合。
那里没有明确记录,但我从网上发现的内容推测 kCCAlgorithmAES
使用的模式是 CBC。
如何更改 CCCrypt
使用的 AES 模式?
文档说:
CCCrypt
Stateless, one-shot encrypt or decrypt operation. This basically performs a sequence ofCCCrytorCreate()
[sic],CCCryptorUpdate()
,CCCryptorFinal()
, andCCCryptorRelease()
.
现在,CCCryptorCreate
似乎也不接受模式参数;事实上,我们 see CBC 确实是硬编码的(除了允许我们使用 ECB 的那个有点武断):
/* Determine mode from options - old call only supported ECB and CBC
we treat RC4 as a "mode" in that it's the only streaming cipher
currently supported
*/
if(alg == kCCAlgorithmRC4) mode = kCCModeRC4;
else if(options & kCCOptionECBMode) mode = kCCModeECB;
else mode = kCCModeCBC;
如果我们想使用另一种模式,我们必须使用 CCCryptorCreateWithMode
。因此,不幸的是,似乎无法更改 CCCrypt
.