我有一个与我自己的服务器通信的
Android应用程序.由于我们没有https,我想实现自己的数据加密.服务器是用PHP实现的.
我想使用AES,但我的主要问题是与本地应用程序共享服务器密钥,因为它可能被截获,然后任何人都可以解密我的消息.
我应该使用RSA吗?或者有一种安全的方式来共享密钥?
谢谢!
最佳答案 您应该使用RSA和AES加密协议.
> RSA加密/解密短字符串(对CPU很重).
> AES加密/解密大字符串(它比RSA快).
所以:
>客户端为每个请求创建一个随机AES密钥(24个字节很好);
>客户端使用AES密钥加密字符串请求(任意长度);
>客户端使用RSA PUBLIC密钥加密AES密钥;
>客户端将加密的(AES和字符串)发送到服务器(POST很好);
>服务器使用RSA PRIVATE密钥解密AES密钥;
>服务器使用AES密钥解密字符串;
>服务器处理字符串请求;
>服务器使用相同的AES密钥加密响应字符串;
>服务器响应返回给客户端;
>客户端使用AES密钥解密响应.
在GitHub上查看以下开源项目:github.com/rcbarioni/followzup
服务器使用PHP实现,并且有PHP和Java的API.客户端和服务器之间的通信使用AES和RSA.
PHP和Java加密库完全兼容.
Android for Java也兼容.