【问题标题】:Encryption and decryption between PHP and JavaPHP与Java之间的加解密
【发布时间】:2011-11-05 03:33:18
【问题描述】:

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

【问题讨论】:

  • 您为什么不选择标准加密系统(比如 RSA)并在 PHP 和 Java 中使用它们的实现?例如,pear.php.net/package/Crypt_RSAjavamex.com/tutorials/cryptography/rsa_encryption.shtml ?
  • @Rafael:如果 mcrypt 不是一个选项,那么 Crypt_RSA 很有可能不会(它也依赖于外部模块)。顺便说一句,RSA 不应该用于数据加密,而应该用于握手和协商一个公共密钥。
  • @Andy:您是否已经使用 SSL 在应用程序之间进行通信。如果是这样,为什么要添加额外的加密层? SSL 就足够了。
  • @Rafael:谢谢你的回复。然而,正如 JB Nizet 指出的那样——问题是我不能真正为 PHP 安装任何外部模块......
  • @Andy 从哪里获得证书对加密本身的强度影响不大。此外,SSL 存在的真正原因是您不能“劫持”正在传输的数据 - 添加这个额外的层是不必要的,并且可能很难使用。对于初学者,您将如何在 PHP 和 Java 之间交换密钥?

标签: java php encryption


【解决方案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 对话后对其进行加密,那么您只能在服务器上进行加密/解密。但是,您仍然有一个密钥管理问题。如果您加密/解密,您打算如何保护服务器上的密钥?这总是一个没有简单答案的丑陋问题。

【讨论】:

  • 是的,你是对的,AES 是最好的,但我认为 Apache 不支持开箱即用。谢谢你提到它。为了以防万一,我将其添加到答案中。
  • @chubbard: 抱歉回复延迟,非常感谢您的回答。我现在肯定会满足于我的 SSL 证书的安全性;我很高兴你警告说我实际上可以通过添加另一层加密来破坏我的 SSL——尤其是在最好的情况下,我好像不是 PHP 专家!您还告诉我有关将证书导入到我的 Java 应用程序中的事情,这是我不知道我应该做的事情,我一定会研究的——所以我也感谢你!(我只是认为这很简单将https而不是http的情况)
  • 不幸的是,我不确定我是否有时间或知识来确保我的“SSL 对话”现在很强大 - 但我正在考虑投资专用服务器等,等在不久的将来,希望这能让我将安全性提升到一个新的水平......
猜你喜欢
  • 2012-02-04
  • 2017-10-29
  • 2011-09-30
  • 2018-02-04
  • 2012-07-12
  • 1970-01-01
  • 2011-03-26
  • 2012-04-04
  • 2012-06-26
相关资源
最近更新 更多