【问题标题】:ios decrypt base64 encoded string using des ecbios使用des ecb解密base64编码的字符串
【发布时间】:2014-04-04 01:01:04
【问题描述】:

我正在尝试解密一个字符串,该字符串首先在 ecb 模式下使用 des 加密,然后以 base64 编码。

这是我的代码:

+ (NSString *)decrypt:(NSString *)encryptedText
{
    NSString *key = @"12345678";
    NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:encryptedText options:0];
    size_t numBytesDecrypted = 0;
    size_t bufferSize = [decodedData length] + kCCBlockSizeDES;
    void *buffer = malloc(bufferSize);
    char keyPtr[kCCKeySizeDES+1]; // room for terminator (unused)
    bzero(keyPtr, sizeof(keyPtr));
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];


    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
                                      kCCAlgorithmDES,
                                      kCCOptionPKCS7Padding | kCCOptionECBMode,
                                      keyPtr,
                                      kCCKeySizeAES256,
                                      NULL /* initialization vector (optional) */,
                                      [decodedData bytes], [decodedData length], /* input */
                                      buffer,       bufferSize, /* output */
                                      &numBytesDecrypted);

    NSData *val = [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
    return [[NSString alloc] initWithData:val encoding:NSUTF8StringEncoding];
}

但是我得到一个零字符串作为回报......有什么想法吗?

【问题讨论】:

  • 有趣的是,这是与今天早些时候的另一个问题相同的基本代码的复制/粘贴。这看起来像一个班级项目。
  • 我可以向你保证,这不是一个课堂项目。不过,我确实在其他地方找到了该代码。
  • 好的,有趣的是在同一天选择了相同的基本代码。我可以看到基本代码更简单,这是选择它的合理理由。不幸的是,代码太老了,不再是最佳实践,更好的选择是 Rob Napier 的RNCryptor

标签: ios encryption base64 des ecb


【解决方案1】:

您正在使用 DES,但在对 CCCrypt 的调用中将密钥大小指定为:kCCKeySizeAES256

从安全角度来看,这段代码有很多问题,请不要在实际应用中使用它。这不再是最佳实践。除其他事项外,应使用基于密码的密钥派生函数(例如 PBKDF2)将密码转换为密钥。使用 DES 和 ECB 模式也是一个弱点。

【讨论】:

  • 加密方面是一个缓解因素。我正在将数据编码成二维码,为了防止它被轻易读取,我正在加密数据。即使使用解密的数据,安全性也不会受到太大影响......除非我需要花费最少的时间才能使这更加安全,否则我认为这不值得。
  • 考虑使用 AES,它同样易于使用并提供更好的安全性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多