//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模式,所以如果我在IV中使用CBC模式,它会提供更安全的加密吗?
总之,我应该使用默认的CBC模式还是ECB模式?为什么?
那么IV呢? 指定IV更长的字符串会使加密更加安全和随机吗? 对于ECB模式,它将被忽略。如果我使用CBC模式那么什么应该是IV?请提供一个有用的例子。
对于同一文件的加密和解密,IV应该相同吗?或者可以是不同的IV?
关键是什么? 我使用的长度是128,算法:AES
我使用过的密钥是:@“ltd @ mpc”强壮吗?或者我应该使用密钥:0xfedcba9876543210这样的东西?
答案 0 :(得分:2)
CBC模式更安全,同样的随机iv需要用于加密和解密,它不需要保密。有关详细信息和示例图片,请参阅Block cipher mode of operation。
使用密码时,使用密钥派生函数(如PBKDF2)从中创建随机密钥。
密钥长度128目前很好,我一般没有理由不使用更长的密钥。
考虑使用RNCryptor,它会处理所有这些并添加身份验证和版本控制。