Android和PHP服务器:加密和解密数据

时间:2013-01-31 08:46:50

标签: php android encryption aes rsa

我有一个与我自己的服务器通信的Android应用程序。由于我们没有https,我想实现自己的数据加密。服务器是用PHP实现的。

我想使用AES,但我的主要问题是与本地应用程序共享服务器密钥,因为它可能被截获,然后任何人都可以解密我的消息。

我应该使用RSA吗?或者有一种安全的方式来共享密钥?

谢谢!

2 个答案:

答案 0 :(得分:2)

您应该使用RSA和AES加密协议。

  • RSA加密/解密短字符串(CPU很重)。
  • AES加密/解密大字符串(它比RSA快)。

所以:

  1. 客户端为每个请求创建一个随机AES密钥(24个字节很好);
  2. 客户端使用AES密钥加密字符串请求(任意长度);
  3. 客户端使用RSA PUBLIC密钥加密AES密钥;
  4. 客户端将加密的(AES和字符串)发送到服务器(POST很好);
  5. 服务器使用RSA PRIVATE密钥解密AES密钥;
  6. 服务器使用AES密钥解密字符串;
  7. 服务器处理字符串请求;
  8. 服务器使用相同的AES密钥加密响应字符串;
  9. 服务器响应返回客户端;
  10. 客户端使用AES密钥解密响应。
  11. 在GitHub上查看以下开源项目:github.com/rcbarioni/followzup

    服务器是用PHP实现的,有PHP和Java的API。客户端和服务器之间的通信使用AES和RSA。

    PHP和Java加密库完全兼容。 Android for Java也兼容。

答案 1 :(得分:0)

好吧,我会做以下其中一项 - 优先级降低:

  • 告诉你的老板,HTTPS是可行的方法。
  • 使用类似openSSL的SSL库
  • 使用AES作为消息,使用RSA交换会话的AES密钥

最后一个是最不可取的,因为有很多东西,你可能做错了,从而意外地破坏了安全性。举个例子:如果您碰巧同时使用加密和压缩,那么您很容易受到CRIME attack ...

的攻击