需要引入框架
#import <CommonCrypto/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)
参数说明:
1.CCOperation op:
/* 加密:kCCEncrypt = 0, 解密:kCCDecrypt = 1 */
2.CCAlgorithm alg:
加解密根据哪个算法标准
kCCAlgorithmAES128=0,
kCCAlgorithmAES=0,
kCCAlgorithmDES=1,
kCCAlgorithm3DES=2,
kCCAlgorithmCAST,
kCCAlgorithmRC4,
kCCAlgorithmRC2,
kCCAlgorithmBlowfish
3.CCOptions options:
选择的补码方式,以及是否选择ECB模式,默认是CBC模式
kCCModeECB = 1,
kCCModeCBC = 2,
kCCModeCFB = 3,
kCCModeCTR = 4,
kCCModeF8 = 5, // Unimplemented for now (not included)
kCCModeLRW = 6, // Unimplemented for now (not included)
kCCModeOFB = 7,
kCCModeXTS = 8,
kCCModeRC4 = 9,
kCCModeCFB8 = 10,
4.const void *key:
密钥: 加密和解密的密钥必须一致。必须和选择的算法相匹配,不同的算法要求的秘钥长度不一样
5.size_t keyLength:
密钥的大小,这里是真正决定密钥长度的地方
kCCKeySizeAES128 = 16,
kCCKeySizeAES192 = 24,
kCCKeySizeAES256 = 32,
kCCKeySizeDES = 8,
kCCKeySize3DES = 24,
kCCKeySizeMinCAST = 5,
kCCKeySizeMaxCAST = 16,
kCCKeySizeMinRC4 = 1,
kCCKeySizeMaxRC4 = 512,
kCCKeySizeMinRC2 = 1,
kCCKeySizeMaxRC2 = 128,
kCCKeySizeMinBlowfish = 8,
kCCKeySizeMaxBlowfish = 56,
6.iv:
偏移向量,CBC模式下需要;不传默认16位0,只有在ECB模式下不需要
7.const void *dataIn:
要加解密的数据data.bytes
8.size_t dataInLength:
要加解密的数据的大小
9.void *dataOut :
输出的数据,加解密后的数据写在这里,
10.size_t dataOutAvailable:
输出数据时需要的可用空间大小。数据缓冲区的大小(字节)
11.size_t dataOutMoved:
操作成功之后,被写入dataout的字节长度。如果由于提供的缓冲区空间不足而返回kCCBufferTooSmall,则在这里返回所需的缓冲区空间。