【发布时间】:2013-01-15 07:26:42
【问题描述】:
我有一个与我自己的服务器通信的 Android 应用程序。由于我们没有 https,我想实现自己的数据加密。服务器是用 PHP 实现的。
我想使用 AES,但我的主要问题是与本地应用程序共享服务器密钥,因为它可能被拦截,然后任何人都可以解密我的消息。
我应该改用 RSA 吗?还是有一种安全的方式来共享密钥?
谢谢!
【问题讨论】:
-
我不认为你在这里是在帮自己一个忙;为什么 https 不是一个选项?
-
其实我也不确定,是老板给的限制。我认为这与域名提供商有关。我会尝试找出为什么我们不能使用它。
-
如果你真的不能使用https(在业务场景中......嗯......)那么当然非对称加密方法肯定是首选。另外,如果您找不到 strem 密码,则必须首先加密整个消息正文,这与 https 相比速度较慢,后者可以通过加密通道传输块。
-
这取决于您将传输什么样的数据。如果要加密固定大小的数据块,即小于 RSA 密钥长度,则相对容易。如果你想加密比 RSA 密钥更大的可变长度,它会很慢,你必须以某种方式实现流式传输。在这种情况下,我建议改用 SSL 库。如果您的应用程序仅适用于 Android,请尝试使用 Java 接口到 HTTP,它已启用 https 支持。
-
SSL 使用 RSA 交换对称密钥,然后用对称密钥加密数据,速度快得多。但我建议问问你的老板有什么限制阻止了 HTTPS。
标签: php android encryption aes rsa