私の iOS アプリは、メイン サーバーからメッセージを送受信します。これらのメッセージを暗号化したい。iOS6でAES-256文字列をどのように暗号化/復号化しますか? 「ネイティブ」ソリューションはありますか?
3 に答える
OpenSSL は iOS にバンドルされていませんが、自分でコンパイルしてアプリケーションにリンクすることができます。Common Crypto を使用することもできます。
OpenSSL がバンドルされていない理由は、古いバージョンに依存するアプリケーションとの互換性を損なうことなく OpenSSL のシステム バージョンをアップグレードすることができないためです。
AES-256 は単なる暗号であり、メッセージを安全にしないため、メッセージの暗号化に「AES-256 を使用」しないでください。SSL や TLS などのより高いレベルの機能を使用する必要があります。このように考えてください。AES-256 はレンガのようなものです。あなたは家が欲しい。家は安全で、レンガで家を建てることができます。レンガを所有しても安全にはなりません。AES-256 を使用しても、プロトコルは安全になりません。
CCCrypt 呼び出しを使用することをお勧めします。
他のスレッドで例を見ることができます:
iOS 5: データ暗号化 AES-256 EncryptWithKey: 見つかりません
一方、ディートリッヒの選択肢の方が理にかなっていると思います。
はい、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
お役に立てば幸いです。