iOS:CCCrypt()哪个更安全KCCOPIONECBMODE或kCCModeCBC

iOS:CCCrypt()哪个更安全KCCOPIONECBMODE或kCCModeCBC,ios,objective-c,xml,security,encryption,Ios,Objective C,Xml,Security,Encryption,我有一个文件,我想加密它,我利用上述功能。加密和解密工作得非常好 但我担心的是:cccrypt()中有使用默认CBC模式或指定ECB模式的选项。我正在使用ECB模式,所以如果我使用带IV的CBC模式,那么它会提供更安全的加密吗 简而言之,我应该使用默认CBC模式还是ECB模式?为什么 那静脉注射呢? 指定更长的字符串是否会使加密更加安全和随机? 对于ECB模式,它将被忽略。如果我使用CBC模式,那么IV应该是什么?请提供一个例子,这将是有益的 对于同一文件的加密和解密,IV应该相同吗?或者可以是

我有一个文件,我想加密它,我利用上述功能。加密和解密工作得非常好

但我担心的是:cccrypt()中有使用默认CBC模式或指定ECB模式的选项。我正在使用ECB模式,所以如果我使用带IV的CBC模式,那么它会提供更安全的加密吗

简而言之,我应该使用默认CBC模式还是ECB模式?为什么

那静脉注射呢? 指定更长的字符串是否会使加密更加安全和随机? 对于ECB模式,它将被忽略。如果我使用CBC模式,那么IV应该是什么?请提供一个例子,这将是有益的

对于同一文件的加密和解密,IV应该相同吗?或者可以是不同的IV

那钥匙呢? 我使用的长度是128,算法是AES

我使用的键是:@“ltd@mpc"


它强壮吗?或者我应该使用密钥:0xfedcba9876543210之类的吗?

CBC模式更安全,需要使用相同的随机iv进行加密和解密,它不需要保密。有关更多信息和示例图像,请参见

使用密码时,使用密钥派生函数(如PBKDF2)从中创建随机密钥

128的密钥长度目前还可以,我一般没有理由不使用更长的密钥


考虑使用,它会处理所有这些问题,并添加身份验证和版本控制。

我投票将此问题作为离题题来结束,因为这不是编程问题,前面已经讨论过:或者使用“kCCKeySizeAES128”作为密钥长度,而不是块大小。。。它们的结果是相同的值,但实际上您使用了错误的常数。非常感谢。我已经编写了将盐添加到键中,生成随机IV的代码。
//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