Tôi đang tìm kiếm câu trả lời nhưng không thể tìm thấy câu trả lời ở đây. Xin lỗi nếu câu hỏi này đã được hỏi.PHP mcrypt_encrypt/mcrypt_decrypt issue, trả về một giá trị khác
Tôi có một mã đơn giản mã hóa và giải mã một chuỗi, chuỗi trông giống nhau, nhưng khi so sánh chúng bằng == họ dường như không giống nhau, vì vậy băm khác nhau cũng ..
Dưới đây là mã của tôi:
$oppa = "rompish";
$opp_enc = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, "key", $oppa, MCRYPT_MODE_ECB);
$opp_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, "key", $opp_enc, MCRYPT_MODE_ECB);
echo $oppa."<br />".$opp_dec."<br />";
if ($oppa == $opp_dec) echo "YAY"; else echo "NOPE";
Trên trang:
rompish rompish NOPE
Xin vui lòng cho tôi biết những gì tôi đang làm sai.
Cảm ơn bạn!
AES luôn mã hóa mọi thứ theo khối 16 byte. Rõ ràng 'mcrypt_encrypt' đệm chuỗi bằng 0 byte cho đến khi nó là bội số của 16.' mcrypt_decrypt' dutifully decrypts này nhưng thiếu thông tin để loại bỏ padding. Và bạn đang lừa mình vì các giá trị được hiển thị trông giống nhau mặc dù 'oppa_dec' thực sự kết thúc bằng 9 byte không. Thay vào đó, hãy sử dụng lược đồ đệm hợp lý. –
Đó là một câu trả lời, không phải là một bình luận, GregS (làm cho nó như vậy hoặc tôi sẽ đăng nó bao gồm cả tên của bạn ở cuối: P) –