适用于Android和iOS的基于密码的加密

时间:2014-04-10 18:23:04

标签: android ios encryption aes

我正在开发一款具有原生Android和原生iOS实现的IM应用。其中一个必需功能是能够通过输入普通密码字符串来加密消息。然后,必须输入此密码才能解密这些消息。我还被告知要使用AES"。

我的计划,我试图接近成功,是采取密码字符串,盐与一些我知道永远不会改变的上下文信息,并使用类似MD5的东西生成固定长度的密钥。我知道这不是超级安全。

要解密,我在上面重复,我得到相同的密钥。然后,我用该密钥解密数据,并恢复原始数据。

我让它在Android和iOS上工作,但他们无法解密彼此的数据,这告诉我可能存在我无法看到的实施差异以及我无法改变。两个平台上AES128加密数据的前16个字节始终相同,但在此之后,它们完全不同。我可以检查什么?

要清楚,用户体验应与使用密码共享zip文件的用户体验相同。用户可以随时从任何设备输入密码,而BAM则会获得未加密的数据。共享密钥文件或其中任何内容都不属于此类。

1 个答案:

答案 0 :(得分:1)

  1. 没有必要使用任何盐(至少我没有看到任何理由)
  2. AES是一种标准 - 无论实施什么,结果都是一样的。
  3. 前128位的相同输出和不同的其余数据意味着您使用的是不同的密码模式AES是分组密码,您可能在两个平台上使用128b块大小,因此第一个块以相同的方式加密下一个用不同的密钥加密。请阅读有关block cipher modes
  4. 的更多信息