PHP和Java之间的加密和解密


Encryption and decryption between PHP and Java

我试图使PHP脚本与Java应用程序交互。它们将共享一些信息,所以我想加密它们之间传递的数据,使其尽可能安全,在拥有SSL证书的基础上。然而,因为我的网站只在JustHost的共享服务器上,据我所知,我不能使用"mcrypt"PHP模块,所以我不知道如何做到这一点,以便我的Java应用程序和PHP脚本都可以加密数据发送和解密数据接收!

Java和PHP之间的SSL会话将在传输过程中保护数据。如果您使用强密码(10+符号)正确保护私钥,并确保您的算法强大,那么没有人能够通过窥探对话来破解它。

在通过SSL会话发送数据之前对数据进行加密不会得到任何额外的保护。实际上你可能会削弱你的安全性因为为了加密数据你必须共享一些密钥如果你选择对称加密。而且,通过交换密钥,您将取消SSL为您提供的大部分保护,因为SSL的巨大好处是我们可以在不同意密钥的情况下加密数据。如果我试图获得你的加密文本,我就会攻击你的客户端,因为找到你的对称加密密钥比破坏SSL更容易。虽然你可以使用非对称加密,但你基本上是在重新发明SSL。

我会专注于确保你的SSL会话是强大的。只使用最强的对称加密:TripleDES, IDEA, AES,如果您的服务器支持它。去掉较弱的算法,这样对话就不能使用较弱的加密。生成1024+公钥/私钥对。这在您的共享服务器上可能并不容易,但是您的Java应用程序只能选择使用TripleDES、IDEA和AES。

确保在客户端验证服务器的证书,以确保您没有与错误的服务对话。这基本上意味着获取服务器的证书并将其添加到客户机上使用的密钥存储库中。如果是Java,您可以使用keytool导入证书,并在SSL会话中使用该密钥库作为TrustManager/KeyManager。

如果你想在数据通过SSL会话后加密数据,那么你可以只在服务器上加密/解密。但是,您仍然有一个密钥管理问题。如果您加密/解密,您打算如何保护服务器上的密钥?这总是一个没有简单答案的丑陋问题