加密客户端/解密服务器端JS - PHP
我尝试使用js和服务器端解密使用PHP的客户端加密,调试了几个小时才发现,即使他们有相同的加密方法,他们不匹配,不管大小如何等。加密客户端/解密服务器端JS - PHP
有许多加密js库可用,并且php中的crypt(),mcrypt,函数已被弃用。
我试图寻找一对(前。AES.js和AES.php),但他们没有制定出
您能否提供什么好加密方法使用?如何实施它们。因为我相信有一个关键的东西,我也听说过IV,我甚至都不知道。
的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,我不知道如何使用。
你可以试试这个代码在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"
);
}
我没有检查它来解密,但是你们引用可能会尝试。
使用mcrypt还可以吗?我真的很早就看到了这个 –
,非常感谢您的耐心,尽管 –
@EhmzYoshinoMamei这个PHP代码并没有像问题中的JavaScript代码那样远程执行。你为什么接受它?你测试过了吗? –
你应该在这里展示一些努力。让我们知道你是如何做的,以及你遇到什么问题 –
我一直在使用CryptoJS.AES.encrypt()函数,但我不知道如何使用它匹配它。我在php手册中搜索过,我看到的只是一个弃用的crypt()和mcrypt_decrypt()。而openssl也没有正确记录。一般来说,我一直在做试验和错误,因为我在加密/解密过程中没有任何线索。我知道如何哈希。 –
有多种不同的加密算法。你也必须使用一些密钥来加密数据。当你试图解密你的密码时,这是不对的。因此,在这里分享您的加密和解密代码 –