代码之家  ›  专栏  ›  技术社区  ›  Raphael

如何使CCCrypt在另一种模式下计算AES?

  •  1
  • Raphael  · 技术社区  · 9 年前

    一次加密方法的签名 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)
    

    似乎没有一个参数接受 CCMode 值(可能是偷偷的,因为所有枚举都是整数?)。我试过把它和 CCOptions 参数,但无效;这两个枚举不是选项,也不能明确组合。

    这里没有明确的记录,但我从网上找到的信息推测,该模式与 kCCAlgorithmAES

    如何更改AES模式 CCCrypt公司

    1 回复  |  直到 9 年前
        1
  •  1
  •   Raphael    9 年前

    文件中说:

    CCCrypt 这基本上执行了一系列 CCCrytorCreate() CCCryptorUpdate() CCCryptorFinal() CCCryptorRelease() .

    现在 CCCryptorCreate 似乎也不接受模式参数;事实上,我们 see

    /* 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公司 .