【问题标题】:Does iOS 6 support OpenSSL?iOS 6 是否支持 OpenSSL?
【发布时间】:2013-04-25 21:03:56
【问题描述】:

我的 iOS 应用从主服务器发送和接收消息。我希望对这些消息进行加密。如何在 iOS6 上加密-解密 AES-256 字符串?有“原生”解决方案吗?

【问题讨论】:

  • 很多 的答案解释了如何在 iOS 上使用 AES 加密。你试过谷歌搜索“AES-256 iOS”吗?您有具体问题吗?
  • NSURLConnections 自动处理 https 中的 ssl,这是你需要的吗?
  • stackoverflow.com/a/2039973/162361 很好地回答了这个问题,并且有一些很好的链接到看起来写得很扎实的代码。

标签: ios objective-c security


【解决方案1】:

是的,iOS 6 支持 OpenSSL。

使用这个: 首先在您的项目中添加Security Framework

然后使用这个Encryption/Decryption Category创建类别

然后导入:

#import <CommonCrypto/CommonCryptor.h>

#import "NSData+Encryption.h"

使用这些:

- (NSData*) encryptString:(NSString*)plaintext withKey:(NSString*)key {
    return [[plaintext dataUsingEncoding:NSUTF8StringEncoding] AES256EncryptWithKey:key];
}

- (NSString*) decryptData:(NSData*)ciphertext withKey:(NSString*)key {
    return [[[NSString alloc] initWithData:[ciphertext AES256DecryptWithKey:key]
                                  encoding:NSUTF8StringEncoding] autorelease];
}

查看此链接: ios-openssl

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我建议使用 CCCrypt 调用。

    您可以在其他线程中查看示例:

    AES Encryption for an NSString on the iPhone

    iOS 5: Data encryption AES-256 EncryptWithKey: not found

    另一方面,我认为 Dietrich 的选择更有意义。

    【讨论】:

      【解决方案3】:

      OpenSSL 没有与 iOS 捆绑,但您仍然可以自己编译并将其链接到您的应用程序中。您也可以使用 Common Crypto。

      未捆绑 OpenSSL 的原因是,无法在不破坏与依赖旧版本的应用程序的兼容性的情况下升级 OpenSSL 的系统版本。

      您不应该“使用 AES-256”来加密您的消息,因为 AES-256 只是一种密码,它不会确保您的消息安全。您应该使用更高级别的工具,例如 SSL 或 TLS。这样想:AES-256 就像一块砖。你想要一个房子。房子是安全的,你可以用砖砌房子。拥有一块砖并不能使您安全。使用 AES-256 并不能使您的协议安全。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-16
        • 2015-12-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多