美文网首页
iOS 加密算法 CommonCrypto/CommonCryp

iOS 加密算法 CommonCrypto/CommonCryp

作者: Aliv丶Zz | 来源:发表于2021-02-07 14:05 被阅读0次

    首先 CommonCryptor主要提供的是对称加密相关接口。包含多种堆成加密算法包含AES DES等等。我们直接通超过创建方式然后对入参一一进行解释。

    创建方式

    它们有两种使用的方式去获取加解密处理的数据。核心函数分别是

    • CCCrytorCreate() | CCCryptorCreateWithMode,CCCryptorUpdate() ,CCCryptorFinal() , and CCCryptorRelease();
    • CCCrypt(). //对上面函数的封装。

    方法1 CCCrypt()

        
    CCCryptorStatus CCCrypt(
        CCOperation op,         /* 加密or解密. */
        CCAlgorithm alg,        /* kCCAlgorithmAES128, 加密方式 */
        CCOptions options,      /* kCCOptionPKCS7Padding,填充模式,默认的是 CBC 模式,CBC模式则需设置iv向量。不设置则为NULL,
    若使用ECB模式,则为kCCOptionPKCS7Padding | kCCOptionECBMode.iv向量无效 */
        const void *key,        /* 秘钥*/
        size_t keyLength,     /*秘钥长度 */
        const void *iv,         /* CBC模式下的初始向量。ECB模式下无效,可设置为NULL, */
        const void *dataIn,     /* 明文数据 */
        size_t dataInLength,   /* 明文数据长度. */
        void *dataOut,          /* 输出数据的缓冲区 */
        size_t dataOutAvailable,     /* 输出数据的缓冲区大小. */
        size_t *dataOutMoved)       /* 成功返回后的字节数. */
    

    1.1 CCOperation op 加密还是解密

    enum {
        kCCEncrypt = 0, //加密 
        kCCDecrypt,     // 解密
    };
    typedef uint32_t CCOperation;
    

    1.2 CCAlgorithm alg 加密方式

    enum {
        kCCAlgorithmAES128 = 0,
        kCCAlgorithmAES = 0,
        kCCAlgorithmDES,
        kCCAlgorithm3DES,       
        kCCAlgorithmCAST,       
        kCCAlgorithmRC4,
        kCCAlgorithmRC2,   
        kCCAlgorithmBlowfish    
    };
    typedef uint32_t CCAlgorithm;
    

    1.3 CCOptions options 填充模式

    enum {
        /* options for block ciphers */
        kCCOptionPKCS7Padding   = 0x0001,
        kCCOptionECBMode        = 0x0002
        /* stream ciphers currently have no options */
    };
    typedef uint32_t CCOptions;
    

    目前苹果开放的只有这两种。可能与java端不一致。

    加密模式有四种,分别是

    • ECB(Elecyronic Code Book,电子密码本)、
    • CBC(Cipher Block Chaining,加密块链)、
    • CFB(Cipher FeedBack Mode,加密反馈)、
    • OFB(Output FeedBack,输出反馈)。

    填充模式:

    • 若使用CBC模式,则为kCCOptionPKCS7Padding
    • 若使用ECB模式,则为kCCOptionPKCS7Padding | kCCOptionECBMode.

    ECB:将每一个数据块单独加密后,在拼接。 解密也是同样的道理。先拆分数据库,再单独解密
    CBC:加密每一个数据块,都会与上一个数据块有联系。密码块链,使用秘钥和一个向量对数据执行加密转换, 能够保证密文的完整性。如果一个数据改变了。后面数据都会造成改变。
    iOS加密算法ECB CBC区别

    相关文章

      网友评论

          本文标题:iOS 加密算法 CommonCrypto/CommonCryp

          本文链接:https://www.haomeiwen.com/subject/fqrntktx.html