Java 如何告诉php后端Android应用程序前端使用的加密密钥?

Java 如何告诉php后端Android应用程序前端使用的加密密钥?,java,php,android,security,encryption,Java,Php,Android,Security,Encryption,在Android应用程序中硬编码加密密钥是一个坏主意——这并不是什么新鲜事(另请参阅) 我发现了另一篇关于加密和密钥生成器的文章,它将密钥保存到Android密钥库()——这似乎是个好主意。 但是:我想将任何加密的信息(电子邮件地址、密码、用户名等)发送到我的后端。因此,我使用加密的数据,通过互联网从手机到我的后端 加密的方法(来自StackOverflow链接)使用硬编码的加密密钥,我使用密钥生成器来避免这种情况。但是我的后端需要知道由前端创建的密钥 如何将此密钥发送到后端?用另一个在我的应用

在Android应用程序中硬编码加密密钥是一个坏主意——这并不是什么新鲜事(另请参阅)

我发现了另一篇关于加密和密钥生成器的文章,它将密钥保存到Android密钥库()——这似乎是个好主意。 但是:我想将任何加密的信息(电子邮件地址、密码、用户名等)发送到我的后端。因此,我使用加密的数据,通过互联网从手机到我的后端

加密的方法(来自StackOverflow链接)使用硬编码的加密密钥,我使用密钥生成器来避免这种情况。但是我的后端需要知道由前端创建的密钥

如何将此密钥发送到后端?用另一个在我的应用程序中硬编码的密钥加密?它是前端(应用程序)和后端(php服务器)之间的一次性通信。或者应该将未加密的密钥发送到后端?或者我应该在前端和后端都执行密钥生成器——冒着密钥不相等的风险


希望获得一些关于如何使连接“足够”安全的明智建议。

使用公钥加密来加密只有服务器才能解密的数据。您可以发送服务器的公钥,而不必担心泄露。一般来说,答案通常是“只使用SSL/TLS”。这似乎也适用于这种情况。如果您只想保护连接,请使用TLS。如果你想做更多的事情,你需要描述这是什么,答案很可能仍然是“使用TLS”。尝试使用您自己的加密将导致TLS的错误重新实现。@Kairos TLS端到端加密。不管信号是在第2层(小区层)还是在第7层被截获,数据都是加密的。只有服务器和客户端可以解密有效负载。你需要仔细阅读TLS的功能。只有当你拥有连接任意一方的私钥时,你才能截获和解码,而窃听者没有。是的,可以通过TLS连接发送用户名和密码,不过最好使用SRP,这样可以防止重播和其他MITM危害。