如何从OpenSSL加密数据中获取初始化向量(iv)

Dav*_*Nix 2 iphone encryption openssl cryptography ios

免责声明:密码学新手.

我有一个使用OpenSSL加密数据的外部进程,现在使用salt.

iPhone应用程序从服务器获取该数据,将其下载到应用程序的文档目录,并需要对其进行解密.iPhone OS不包含OpenSSL库.你可以自己构建它,但这很困难而且很棘手.由于Stackoverflow的帮助,我发现的"最简单"的解决方案是使用CommonCrypto/CommonCryptor.h它是安全框架的一部分.

但是解密数据的C函数需要iv才能正确解密.

有没有办法从加密数据中导出iv(对我而言,似乎它会否定额外的安全性)?或者我需要首先以某种方式指定iv并让iPhone应用程序知道它是什么?或者,只是不要使用盐?

Edit1:为了澄清,我正在使用OpenSSL来加密数据文件中的文本.使用OpenSSL的脚本加密文本,上传到Dropbox,然后应用程序从Dropbox下载文件,解析它,并尝试解密文本.

Edit2:是的,我正在使用带有该-pass选项的OpenSSL命令行实用程序.

eri*_*son 5

应为您加密的每条消息随机选择IV.我假设您正在使用OpenSSL命令行实用程序,openssl enc但不清楚您是使用基于密码的加密(-pass-salt选项)还是明确指定密钥(-K-IV选项).

为了最好的安全性,我建议您使用-K选项,并为每条消息随机生成一个新的IV.发送IV和密文.例如,您可以将密文附加到一个文件中的IV,然后在准备解密时从文件的开头删除IV.

IV可以是公开的; 你不必隐藏它.重要的是你为每条消息使用不可预测的IV.