2011-12-17 78 views
2

最近我一直在開發一個需要AES加密的應用程序。 我使用的是具有這樣的呼叫AES加密庫:Cocoa Touch上的AES加密

  • (NSData的*)encryptData:(NSData的*)數據項:(NSData的*)鍵四:(NSData的*)IV;

我明白數據和密鑰是什麼,但iv或初始化向量令我困惑。 會有人心中向我解釋這一點的重要性/它是什麼和什麼AES正確的初始化向量會是什麼樣子?

此外,我將不勝感激,如果有人可以點我在正確的方向,學習基本的程序上的密碼,任何好的書籍或教程在那裏使用C庫或Cocoa框架學習加密。

回答

2

的IV「應該」是數據的隨機字符串,你可以拉數據的/ dev /隨機的簡單性。它基本上是隨機的鹽,可以加密加密。 http://en.wikipedia.org/wiki/Initialization_vector有更多的信息具體是什麼是四。跟蹤您的密鑰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證書獲得。

我建議看看a Security Transforms Programming Guide,它使用SSL證書進行加密和解密,初始化向量在後臺,因爲它們通常是低層次的,應該從抽象的高級別管理密鑰而不是IVs中查看。