2

我正在尝试解密存储在数据库中的一些数据。

有人可以告诉我我在这里做错了什么吗?

我已经检查并重新检查了我传入的所有值,并且似乎与我用于加密的值相同。

此外,每当我传入不正确的键时,它确实会产生输出,但每当我传递正确的键时,它都会返回一个空字符串。

有趣的是,尽管萤火虫将其显示为空字符串,但 javascript 并未将其视为空字符串。

我的加密代码:

$iv = hash('sha256',$_POST['ben'].$_POST['assetName'],true);
$secretKeyFromAnswer = hash('sha256',$_POST['answer'],true);
$encedUsername = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secretKeyFromAnswer , $_POST['username'], MCRYPT_MODE_CBC, $iv));

我的解密代码:

$hashKey = hash('sha256',$_POST['key'],true);
$iv = hash('sha256',$_POST['ben'].$_POST['assetName'],true);
$theData = base64_decode($userToDec);
$decUsername = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $hashKey, $theData , MCRYPT_MODE_CBC, $iv),'\0');
4

1 回答 1

1

“你确定你没有在空字符串上运行加密吗?” ——阿特金斯SJ

你是男人!我的 jquery 代码中有一个错字,实际上是在加密之前读取了一个空字符串!如果您愿意,请提出答案,以便我接受并获得您的代表!干杯

于 2018-10-02T13:26:12.383 回答