我目前正在尝试在目标c中加密aes-128 cfb8格式的字符串。我到处寻找但似乎无法找到有效的解决方案。 Bouncy castle是一个理想的解决方案,但它只适用于java和c#。 openssl是最好的选择吗?我似乎无法找到使用openssl实际加密的任何详细方法。请带领我朝着正确的方向前进。切换到另一种加密不是一种选择。
答案 0 :(得分:1)
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更改的一件事是通过调用CCryptorCreate
来取代对CCCryptorCreateWithMode
的来电,并传递kCCModeCFB8
。
答案 1 :(得分:0)
我目前正致力于医疗单位的安全协议。我绝对相信openssl是加密数据的最佳方法。尽可能使用本机文件系统卸载工作并减少开发时间,而不会引入错误的代码。话虽如此,我对Objective-c非常陌生。