2014-04-10 93 views
1

我正在研究具有原生Android和本机iOS实现的即时通讯应用程序。必需的功能之一是可以通过输入普通密码字符串来加密消息。这些消息必须通过输入该密码进行解密。我被告知要“使用AES”。针对Android和iOS的基于密码的加密

我已经尝试过接近成功的计划是取得密码字符串,将它与一些我知道永远不会改变的上下文信息绑定在一起,并使用类似MD5的东西生成一个固定长度的密钥。我知道这不是超级安全的。

为了解密,我再重复一遍,我得到了相同的密钥。然后,我用该密钥解密数据,并获取原始数据。

我这对Android和iOS工作,但他们无法解密彼此的数据,还告诉我有可能实现的不同,我不能看到,而我不能改变。两个平台上的AES128加密数据的前16个字节总是相同,但在此之后,它们完全不同。我可以检查什么?

要超清晰,用户体验将与使用密码共享zip文件的体验相同。用户随时可以从任何设备和BAM输入密码,他们会得到未加密的数据。共享密钥文件或任何这些东西不是这个的一部分。

回答

1
  1. 没有必要使用任何盐(至少我看不出有任何理由为)
  2. AES是一个标准 - 不管是实施,结果将是相同的。
  3. 这对前128位和不同其余数据的相同的输出意味着,使用的是不同的密码模式AES是块密码和你可能使用它与这两个平台上128B块大小,所以第一块是加密的同样的方式和接下来的是用不同的密钥加密的。请阅读更多关于block cipher modes
+0

我没有在Android上传IV,而且它没有它。一旦我给它与iOS上相同的IV(全部为0x0),它就创建了相同的结果。 –