如何从OpenSSLencryption数据获取初始化向量(iv)

免责声明:新encryption。

我有一个使用OpenSSL来encryption数据的外部进程,现在它使用salt。

iPhone应用程序从服务器获取数据,将其下载到应用程序的文档目录,并需要解密。 iPhone OS不包含OpenSSL库。 你可以自己构build它,但这很困难和棘手。 我find的“最简单”的解决scheme,感谢Stackoverflow的帮助,是使用CommonCrypto/CommonCryptor.h ,它是安全框架的一部分。

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

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

编辑1:为了澄清,我使用OpenSSL来encryption数据文件中的文本。 使用OpenSSL的脚本将文本encryption,上传到Dropbox ,然后应用程序从Dropbox下载文件,parsing文件,并尝试解密文本。

编辑2:是的,我正在使用OpenSSL命令行实用程序与-pass选项。

IV应该随机select你encryption的每条消息。 我假设你正在使用OpenSSL命令行实用程序openssl enc ,但不清楚你是使用基于密码的encryption( -pass-salt选项)还是显式指定键( -K-IV选项)。

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

IV可以公开; 你不必隐藏它。 重要的是,你使用每个消息不可预知的四。

iv不能从encryption数据中获得,必须在双方沟通之外商定或公开。 也取决于encryption模式可能不需要,但CBC是最常见的,并需要iv。 iv基本上使得从第一块中收集任何信息变得困难。

在你的情况下,你只需要找出静态的,或者是静态的,只是对它进行硬编码,或者它可能在前导码中传输,找出如何从数据中提取它。

iv 可以像0一样简单。

SSL的一个问题是试图捕获数据包。 这可以很容易地与应用程序查尔斯(链接在这里) ,它有一个免费的试用版。 我经常使用它。

我个人使用编译OpenSSL的各种function,试试这个tuto http://www.x2on.de/2010/07/13/tutorial-iphone-app-with-compiled-openssl-1-0-0a-图书馆/确实很简单。

干杯!。