【发布时间】:2016-02-13 09:21:05
【问题描述】:
//Stateless, one-shot encrypt operation
CCCryptorStatus cryptStatus = CCCrypt(
kCCEncrypt, //Operation Encrypt or Decrypt
kCCAlgorithmAES128, //Encrypt algorithm to be used
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128, //Key length
nil, //In ECB mode ignored
[datainput bytes], //Data to encrypt
dataLength, //Length of data
buffer, //Data after encrypt
bufferSize, //Size of data after encrypt
&numBytesEncrypted); //Onsuccess no.of bytes written
我有一个想要加密的文件,我正在使用上述功能。加解密工作正常!
但我担心的是:cccrypt() 中有一个选项可以使用默认的 CBC 模式或指定 ECB 模式。我正在使用 ECB 模式,所以如果我将 CBC 模式与 IV 一起使用,它会提供更安全的加密吗?
简而言之,我应该使用默认的 CBC 模式还是 ECB 模式?为什么?
IV 呢? 将 IV 指定为更长的字符串是否会使加密更加安全和随机? 对于 ECB 模式,它将被忽略。如果我使用 CBC 模式,那么 IV 应该是什么?请提供一个有用的例子。
同一文件的加密和解密IV应该相同吗?或者可以是不同的 IV?
那钥匙呢? 我使用的长度是128,算法:AES
我使用的键是:@"ltd@mpc"
强吗?还是我应该使用 key: 0xfedcba9876543210 这样的东西?
【问题讨论】:
-
使用“kCCKeySizeAES128”作为密钥长度,而不是 BlockSize...它们产生相同的值,但实际上你使用了错误的常量。
标签: ios objective-c xml security encryption