2

私の iOS アプリは、メイン サーバーからメッセージを送受信します。これらのメッセージを暗号化したい。iOS6でAES-256文字列をどのように暗号化/復号化しますか? 「ネイティブ」ソリューションはありますか?

4

3 に答える 3

6

OpenSSL は iOS にバンドルされていませんが、自分でコンパイルしてアプリケーションにリンクすることができます。Common Crypto を使用することもできます。

OpenSSL がバンドルされていない理由は、古いバージョンに依存するアプリケーションとの互換性を損なうことなく OpenSSL のシステム バージョンをアップグレードすることができないためです。

AES-256 は単なる暗号であり、メッセージを安全にしないため、メッセージの暗号化に「AES-256 を使用」しないでください。SSL や TLS などのより高いレベルの機能を使用する必要があります。このように考えてください。AES-256 はレンガのようなものです。あなたは家が欲しい。家は安全で、レンガで家を建てることができます。レンガを所有しても安全にはなりません。AES-256 を使用しても、プロトコルは安全になりません。

于 2013-05-01T19:55:57.860 に答える
0

CCCrypt 呼び出しを使用することをお勧めします。

他のスレッドで例を見ることができます:

iPhone での NSString の AES 暗号化

iOS 5: データ暗号化 AES-256 EncryptWithKey: 見つかりません

一方、ディートリッヒの選択肢の方が理にかなっていると思います。

于 2013-05-01T20:01:06.110 に答える
0

はい、iOS 6 は OpenSSL をサポートしています。

これを使用してください: まず、プロジェクトにSecurity Frameworkを追加します。

次に、この暗号化/復号化カテゴリを使用してカテゴリを作成します

次にインポートします:

#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

お役に立てば幸いです。

于 2013-05-01T19:55:50.600 に答える