使用 JAVA (jasypt) 加密并使用 PHP 解密 - 什么是不易受攻击的算法?
我正在处理具有以下任务的遗留系统:
1) Java 应用程序将一些加密数据保存在 mysql 数据库中。这种情况很少发生。数据保存一次,很少更新。
2) PHP 页面从 mysql 数据库加载加密数据并将其用于内部逻辑。此 php 页面必须能够在内部对其进行解密,但不能对其进行加密。
3) java 应用程序还从 mysql 数据库加载加密数据并对其进行解密以供内部使用。
换句话说,我有一个加密和解密数据的 Java 应用程序。我有一个php单页,必须能够解密数据。
目前,我必须使用新的加密算法重新执行此操作。我在 stackoverflow 上进行了研究,很多人都说要远离 MD5 和 DES。据我所知,我必须使用 AES,所以我想出了下面的 java 代码。然而:
a)我不确定如何用 php 解密,我通常使用 openSSL 但我不知道 php 中的等效算法名称。
<?php
ini_set('display_errors', 1);
$salt = 'nXdHqFg74g22g4Vq';
$key = $salt; // ? not sure
$data = 'uVJ+m3FGkzFTCQXpZJysmo53rWh5+5L9dWzyyD8xues=';
$method = "AES-256-CFB"; //not sure which
//openssl_decrypt ( string $data , string $method , string $key [, int $options = 0 [, string $iv = "" [, string $tag = "" [, string $aad = "" ]]]] ) : string
echo openssl_decrypt($data, "AES-256-CFB", $key);
?>
b)这对于一般用途是否足够安全?我不需要任何足够安全的东西,因为这些数据主要通过 https 传输。
参考文献中的重要引述:
理想情况下,您应该远离 DES,并且由于此填充将成为 PHP 中的一个问题,为什么不看看您是否可以将加密算法更改为不那么麻烦且更安全的算法呢?
为了帮助您可以显示此页面:http://www.ietf.org/rfc/rfc4772.txt,其中简洁地表示 DES 容易受到暴力攻击,因此已被弃用并替换为 AES。
社区 ♦ 111 银色徽章于 2013 年 12 月 17 日 17:15 回答
詹姆斯布莱克
MD5 和 DES 都有已知漏洞,不应使用。– SLaks 12 年 4 月 24 日 14:45
MD5 实际上适用于密钥派生,单个 DES 仅适用于实时、短暂的加密目的(基本上永远不会)。当然,两者都应该避免,尤其是当你不知道自己在做什么的时候。– Maarten Bodewes 2012 年 4 月 25 日 20:06
缥缈止盈