目标c中的Aes-128 cfb8加密

时间:2013-03-08 00:08:40

标签: objective-c xcode cocoa aes

我目前正在尝试在目标c中加密aes-128 cfb8格式的字符串。我到处寻找但似乎无法找到有效的解决方案。 Bouncy castle是一个理想的解决方案,但它只适用于java和c#。 openssl是最好的选择吗?我似乎无法找到使用openssl实际加密的任何详细方法。请带领我朝着正确的方向前进。切换到另一种加密不是一种选择。

2 个答案:

答案 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非常陌生。

  1. 使用objective-c程序构建命令行。
  2. 使用您的objective-c程序将该命令行传递给shell。
  3. 让shell处理您的加密。
  4. 从shell接收openssl结果并处理结果以确定是否发生任何错误。 @“”表示没有错误。
  5. 祝你好运。抱歉,我无法提供任何详细的Objective-C代码,我本周刚刚开始使用Objective-C,并且熟悉使用其他语言完成所有代码库。但是每种语言都有一个shell界面,毫无疑问,这是你最好的选择。