2011-12-17 18 views
2

最近私はAES暗号化が必要なアプリケーションを開発しています。 は、私はこのようなコールを持っているAES暗号化ライブラリを使用しています:Cocoa TouchでのAES暗号化

  • (NSDataの*)encryptData:(NSDataの*)データ・キー:(NSDataの*)キーIV:(NSDataの*)IV。

私はデータとキーの内容を理解していますが、ivまたは初期化ベクトルが私を混乱させます。 誰かが私にこのことの重要性を説明してくれるでしょうか、それは何ですか、そして、AESのための適切な初期化ベクトルはどのように見えるでしょうか?

また、基本的なプログラム暗号化、CライブラリやCocoaフレームワークを使った暗号化の学習のための良い本やチュートリアルを学んだり、誰かが適切な方向に向いてくれれば幸いです。

答えて

2

ivは「ランダム」なデータ文字列である必要がありますが、簡単にするために/ dev/randomデータを取得できます。基本的には暗号化を揺るがすランダムな塩です。 http://en.wikipedia.org/wiki/Initialization_vectorには、IVとは何かに関する詳細情報があります。暗号化にも使用されるので、あなたの鍵であなたのivを追跡してください。

NSString *key = @"password"; 
NSString *iv = @"randomstringofcharactersfromdevrandom" 

NSData *cipherstream = [ EncryptionLibrary encryptData: data key: key iv: iv ]; 

NSData *cleartext = [ EncryptionLibrary decryptData: cipherstream key: key iv: iv ]; 

あなたの初期化ベクトルは、アプリケーションのインスタンスごとにランダムでなければなりませんが、あなたの鍵は、一般的に、永続的またはSSL証明書から取得しています。

暗号化と復号化にSSL証明書を使用するa Security Transforms Programming Guideを見てみることをお勧めします。初期化ベクトルは通常低レベルであり、IVではなく抽象的な高レベルの管理キーから見なければならないため、