我尝试使用js进行客户端加密,使用php进行服务器端解密,调试了几个小时后才发现,尽管它们使用相同的加密方法,但无论大小如何,它们都不匹配。
有许多加密js库可用,php中的crypt()、mcrypt函数已被弃用。
我尝试搜索一对(例如:AES.js和AES.php),但都没有成功
你能建议使用什么好的加密方法吗?如何实现它们。因为我相信有一把钥匙什么的,我也听说过静脉输液,我甚至不知道。
jQuery (使用简单的sha256)
$(document).ready(function() {
$("#login").on("submit", function(event) {
var pass = $("#pass").val();
$("#pass").val(CryptoJS.SHA256(pass));
var data = CryptoJS.AES.encrypt($(this).serialize(), $("#token").val());
$("#login").submit();
});
});
我想尝试在php中解密它,但mcrypt_decrypt已被弃用。有一种openssl,我不知道如何使用。
发布于 2017-04-19 15:05:09
您可以尝试在PHP中解密此代码
$Pass = "Passwort";
$Clear = "Klartext";
$crypted = fnEncrypt($Clear, $Pass);
echo "Encrypred: ".$crypted."</br>";
$newClear = fnDecrypt($crypted, $Pass);
echo "Decrypred: ".$newClear."</br>";
function fnEncrypt($sValue, $sSecretKey)
{
return rtrim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$sSecretKey, $sValue,
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND)
)
), "\0"
);
}
function fnDecrypt($sValue, $sSecretKey)
{
return rtrim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
$sSecretKey,
base64_decode($sValue),
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
), "\0"
);
}
我没有检查过,不过你可以试试。
https://stackoverflow.com/questions/43487081
复制相似问题