我目前正試圖在目標c中以aes-128 cfb8格式加密字符串。我到處尋找,但似乎無法找到一個工作解決方案。充氣城堡是一個理想的解決方案,但它只適用於java和c#。 openssl是最好的選擇嗎?我似乎無法找到任何使用openssl進行實際加密的詳細方法。請帶領我走向正確的方向。切換到另一個加密不是一種選擇。目標c中的Aes-128 cfb8加密
回答
CommonCryptor應該使用kCCModeCFB8
支持CFB-8。詳細信息請參見man page for CCCrypt。這就是說,我總是警告人們要非常小心地用像CommonCryptor這樣的低級庫實現這種東西。錯誤地做到這一點非常容易。例如,您必須使用KDF從密碼中正確生成密鑰(您不能僅將密碼字節複製到密鑰數據中),並且IV必須是隨機的,否則CFB會失去一些安全性(更具體地說,您絕不能重複使用相同的鍵和IV)。
如果您不熟悉這些問題,請參閱Properly encrypting with AES with CommonCrypto和Mike Ash的Friday Q&A 2012-08-10: A Tour of CommonCrypto。您需要更換CFB-8的一件是用CCCryptorCreateWithMode
的電話代替CCryptorCreate
,並通過kCCModeCFB8
。
Rob在評論中指出:kCCModeCFB8是一個CCMode(一個枚舉),而不是一個CCOptions(一個位域)。您無法使用kCCOptionPKCS7Padding進行或操作。 (如果可以,那麼PKCS7 Padding也會打開ECB模式,因爲它們都是1.)必須使用CCCryptorCreateWithMode()來設置模式。我不相信用CCCrypt()這樣的一次方便功能來設置模式。 – zaph 2013-11-04 13:47:32
我目前正在研究醫療單位的安全協議。我絕對相信openssl是加密數據的最佳方法。儘可能使用本機文件系統卸載工作並減少開發時間,而不會引入錯誤的代碼。話雖如此,我對Objective-C非常陌生。
- 使用你的objective-c程序來構建命令行。
- 使用您的objective-c程序將該命令行傳遞給shell。
- 讓shell處理您的加密。
- 接收shell和進程結果的openssl結果以確定是否發生錯誤。 @「」表示沒有錯誤。
祝你好運。對不起,我無法提供任何詳細的Objective-C代碼,本週我剛剛開始Objective-C,熟悉使用其他語言的所有代碼庫。但是每種語言都有一個shell界面,毫無疑問,這是您的最佳選擇。
我認爲你正在描述openssl命令行加密?你爲什麼認爲這是最好的方法? OpenSSL'enc'命令沒有遵循任何真正的標準或最佳實踐。這並不可怕,但它肯定會好得多。有關其問題的一些討論,請參見http://security.stackexchange.com/a/23239/5304。 – 2013-10-25 21:26:21
如果OP有興趣在iOS上這樣做,那麼由於不允許啓動新進程,因此使用命令行將不可能(不包括越獄)。對於OSX它將是可用的。 – Kitsune 2013-11-03 14:51:20
- 1. 目標c和C#之間使用AES128進行加密/解密
- 2. Objective-C的AES128加密
- 3. libgcrypt中的AES128不加密
- 4. 加密mbed微控制器(C++)上的AES128-CBC並解密nodejs中的AES128-CBC
- 5. 解密AES128加密的數據
- 6. 解密的NSString與AES128加密
- 7. Node.js aes128加密/解密端口到PHP
- 8. Rijndael加密和解密的目標C
- 9. 目標C中的字符串加密
- 10. 目標中的AES加密技術C
- 11. 目標c DES加密
- 12. AES128 iphone加密匹配,直到最後
- 13. 解密來自PHP的Objective-C中的AES128/CBC
- 14. AES128 Java和Objective C中的CBC加密提供不同的輸出
- 15. 使用AES128 CTR在給定密鑰的iOS中加密和解密隨機NSString
- 16. 崩潰:使用Swift 2.1的iOS 10中的AES128加密
- 17. AES的Java加密16字節與目標C密鑰解密
- 18. AES256加密目標c執行
- 19. 3DES加密CBC模式在目標c
- 20. 目標c解碼加密數據
- 21. 在目標c中構建一個加密密鑰庫?
- 22. iOS4中的AES128編碼+
- 23. AES Base64 256位密鑰加密和解密目標C
- 24. UWP下的AES128-ECB
- 25. 我可以在Java 1.4中使用AES128/ECB/PKCS7加密嗎
- 26. AES128與HLS流
- 27. 的iOS庫AES128加密CFB沒有填充
- 28. AES128-CBC加密可以產生奇數長度的輸出嗎?
- 29. 如何避免硬編碼加密密鑰(目標C)?
- 30. 在C#中加密加密#
您的問題與http://stackoverflow.com/questions/2774239/help-for-aes-128-bit-algorithm-i-want-to-encrypt-it和http://watchitlater.com/有關blog/2010/02/java-and-iphone-aes-interoperability/ – user1929959 2013-03-08 00:19:26