【问题标题】:iOS:CCCrypt() Which is more secure kCCOptionECBMode or kCCModeCBCiOS:CCCrypt() 哪个更安全 kCCOptionECBMode 或 kCCModeCBC
【发布时间】: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 这样的东西?

【问题讨论】:

标签: ios objective-c xml security encryption


【解决方案1】:

CBC模式更安全,加解密需要使用相同的随机iv,不需要保密。有关更多信息和示例图片,请参阅 Block cipher mode of operation

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

目前 128 的密钥长度很好,我一般没有理由不使用更长的密钥。

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

【讨论】:

  • 非常感谢。我已经编写了向密钥添加盐,生成随机 IV 的代码。
猜你喜欢
  • 2010-10-09
  • 2014-10-31
  • 2011-11-11
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 2013-03-22
相关资源
最近更新 更多