我目前正在尝试在Objective C中使用AES-128 CFB8格式加密字符串。我已经搜索了很多地方,但似乎找不到可行的解决方案。Bouncy Castle是理想的解决方案,但它只能在Java和C#上使用。这里最好的选择是OpenSSL吗?但我无法找到任何详细的方法来实际使用OpenSSL进行加密。请指引我正确的方向。转换到其他加密方式不是选项。
我目前正在尝试在Objective C中使用AES-128 CFB8格式加密字符串。我已经搜索了很多地方,但似乎找不到可行的解决方案。Bouncy Castle是理想的解决方案,但它只能在Java和C#上使用。这里最好的选择是OpenSSL吗?但我无法找到任何详细的方法来实际使用OpenSSL进行加密。请指引我正确的方向。转换到其他加密方式不是选项。
CommonCryptor应支持使用kCCModeCFB8
的CFB-8。有关详细信息,请参见 CCCrypt的手册页面。
话虽如此,我总是警告人们要非常小心地使用任何低级库(如CommonCryptor)手动实现此类内容。它极易出错。例如,您必须正确地从密码生成密钥,使用KDF(您不能仅将密码字节复制到密钥数据中),并且IV必须是随机的,否则CFB会失去一些安全性(更具体地说,您绝不能重用相同的密钥和IV)。
如果您对这些问题不熟悉,请参见使用CommonCrypto正确加密AES和Mike Ash的Friday Q&A 2012-08-10:CommonCrypto之旅。您需要更改CFB-8中的一个部分,将调用CCryptorCreate
替换为调用CCCryptorCreateWithMode
,并传递kCCModeCFB8
。我目前正在为医疗单位开发安全协议。我绝对相信openssl是加密数据的最佳方法。尽可能使用本地文件系统来卸载工作,减少开发时间,而不会引入错误代码。话虽如此,我对objective-c非常陌生。
祝你好运。很抱歉我无法提供任何详细的Objective-C代码,我刚开始学习Objective-C,熟悉在其他语言中完成所有代码库。但是每种语言都有一个shell接口,这是您最好的选择,毫无疑问。