以前,我有一个工作系统用php加密数据,用java解密。这是php代码:
function encrypt($message, $initialVector, $secretKey) {
return base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
md5($secretKey),
$message,
MCRYPT_MODE_CFB,
$initialVector
)
);
}
function decrypt($message, $initialVector, $secretKey) {
$decoded = base64_decode($message);
return mcrypt_decrypt(
MCRYPT_RIJNDAEL_128,
md5($secretKey),
$decoded,
MCRYPT_MODE_CFB,
$initialVector
);
}
以及java代码
public String decrypt(String encryptedData, String initialVectorString, String secretKey) {
String decryptedData = null;
try {
SecretKeySpec skeySpec = new SecretKeySpec(md5(secretKey).getBytes(), "AES");
IvParameterSpec initialVector = new IvParameterSpec(initialVectorString.getBytes());
Cipher cipher = Cipher.getInstance("AES/CFB8/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, initialVector);
byte[] encryptedByteArray = (new org.apache.commons.codec.binary.Base64()).decode(encryptedData.getBytes());
byte[] decryptedByteArray = cipher.doFinal(encryptedByteArray);
decryptedData = new String(decryptedByteArray, "UTF8");
} catch (Exception e) {
e.printStackTrace();
}
return decryptedData;
}
但是,我最近从PHP5.x切换到7.1,现在得到以下消息:
“不推荐使用函数mcrypt\u encrypt()”
看来麦克里普不再是个好选择了。我在google上搜索了很多,但大多数例子仍然使用mcrypt。唯一其他好的选择是使用诸如rncryptor或defuse之类的工具,但没有任何工作示例。有没有一些简单的工作示例可以用于php和java?我需要能够将数据解密为其原始形式,因为我需要用它执行某些任务。
提前谢谢
2条答案
按热度按时间jaql4c8m1#
你考虑过搬家吗
mcrypt_encrypt
至openssl_encrypt
. 请记住openssl
如果给定相同的明文和密钥,则不会输出相同的加密文本。另外,移除
md5
因为它是非常快速和容易暴力。3b6akqbq2#
这看起来像来自此链接的代码:http://php.net/manual/de/function.mcrypt-encrypt.php#119395. 但是无论如何,我认为应该用openssl\u encrypt()来代替它。
这是函数的一个端口(当然没有md5)。