簡體   English   中英

Crypto-Js與mcrypt的輸出不同

[英]Crypto-Js different output from mcrypt

我有一個js腳本,用於加密“膀胱”數據。 如果我加密它,則返回的輸出

JS腳本結果

uqnOrevjCc2YCvY3uKNjzA==

現在,作為該答案的比較基礎,我寫了或者說是在PHP中搜索與JS腳本相似的等效腳本。 令我感到困惑的是,邏輯是正確和正確的,但答案卻是不同的。 在使用mcrypt的php腳本上,我得到了以下結果

mcrypt結果

HzfWFNKcAmkO6zJEYjbG4Q==

如果您注意到,長度是相同的,這意味着我對代碼所做的邏輯/修改是正確的。 現在,正如我之前所說,我將腳本復制到了這里的一些帖子中。

這是我認為使用crypto-JS的JS腳本

function crypto_encrypt(text) {                                                                        //This is for JS
var keyBase64 = CryptoJS.enc.Base64.parse("ITU2NjNhI0tOc2FmZExOTQ==");
var iv = CryptoJS.enc.Base64.parse('AAAAAAAAAAAAAAAAAAAAAA==');

var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(text), keyBase64,
    {
        keySize: 128 / 8,
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
        //padding: CryptoJS.pad.ZeroPadding
    });

// Returns a Base64 encoded string.
return encrypted;
}

這是我在mcrypt / mycrypt中找到的代碼

<?php
$encrypted = "Blader";
$iv        = "0000000000000000";   // iv_base64 from JS
$key       = hexdec("213536363361234b4e736166644c4e4d");  // key_base64 from JS
$plaintext = mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv );
echo base64_encode($plaintext);
?>

現在的問題是,我嘗試了從UTF8_encode到base64_encode的所有內容並進行解碼,但是仍然找不到問題,而且我想知道是否可以實現此目標,因為我注意到JS-Script中的IV與mcryp中的IV不同(PHP)我試圖回應的所有內容。 任何建議,評論和建議都將受到高度感謝。

和平了。

首先,您必須在PHP中使用與在CryptoJS中完全相同的密鑰和IV ,否則將無法正常工作。 您是否比較了密鑰和IV的值? 他們不匹配。

其次,您必須在每一側使用相同的填充 您檢查了MCrypt護墊的情況嗎? 它使用零填充。 您的兩個純文本是不同的 ,因為填充是純文本的一部分。

最后,難道你不想在這里使用mcrypt_ 加密 ,而不是mcrypt_decrypt的?

如果將鍵和IV,填充以及PHP進行匹配,您將得到相同的結果(我用\\ x0a-10-手動填充以匹配PKCS#7填充):

$encrypted = "Blader\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a\x0a";
$iv = base64_decode('AAAAAAAAAAAAAAAAAAAAAA==');
$key = base64_decode('ITU2NjNhI0tOc2FmZExOTQ==');
$plaintext = mcrypt_encrypt( MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv );
echo base64_encode($plaintext);

uqnOrevjCc2YCvY3uKNjzA==

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM