PHP和Java之间的加密和解密

时间:2011-08-27 15:53:32

标签: java php encryption

我正在尝试创建一个PHP脚本来与Java应用程序进行交互。他们将共享一些信息,因此我想加密他们之间传递的数据,以便在拥有SSL证书的基础上尽可能安全。但是,因为我的网站只在JustHost的共享服务器上,据我所知,我不能使用'mcrypt'PHP模块,所以我不知道如何做到这一点,以便我的Java应用程序和PHP脚本可以加密正在发送的数据并解密正在接收的数据!

1 个答案:

答案 0 :(得分:1)

Java和PHP之间的SSL对话将在传输过程中保护您的数据。如果您使用强密码(10+符号)正确保护私钥,并确保您的算法强大,任何人都无法通过窥探对话来打破它。

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

我会专注于确保您的SSL对话很强大。仅使用最强的对称加密:TripleDES,IDEA,AES(如果您的服务器支持它)。取出较弱的算法,以便对话无法使用较弱的加密。生成1024个以上的公钥/私钥对。在共享服务器上这可能并不总是那么容易,但您的Java应用程序只能选择使用TripleDES,IDEA和AES。

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

如果您希望在数据经过SSL对话后加密,那么您只能在服务器上加密/解密。但是,您仍然存在密钥管理问题。如果您加密/解密如何计划在服务器上保护密钥?这总是一个丑陋的问题,没有一个简单的答案。