美文网首页
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