2017-05-10 29 views
0

我發現,有人曾撰文指出,在客戶端與CryptoJS,這是此數據加密演示頁:需要幫助解密JavaScript的AES加密的字符串(使用加密的js)

https://github.com/odedhb/AES-encrypt 
只有

它有一個加密功能,所以我添加了我認爲會解密的功能,但最終會得到完全不同的文本。

我的整個測試頁:

<html> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script> 

<br>text:<input id='text' type='text' value='0.1'/> 

<br>password:<input id='pass' type='text' value='cool'/> 

<br><button onclick="encrypt()">encrypt</button> 
<br><button onclick="decrypt()">decrypt</button> 


<br>encrypted:<br><input id='result'></input> 


<br>decrypted:<br><span id="decode"></span> 

<script> 
    function encrypt(){ 

     var encrypted = CryptoJS.AES.encrypt(document.getElementById("text").value, document.getElementById("pass").value); 
     document.getElementById("result").value = encrypted; 
    } 

    function decrypt(){ 

     var decrypted = CryptoJS.AES.decrypt(document.getElementById("result").value, document.getElementById("pass").value); 
     document.getElementById("decode").innerHTML = decrypted; 
    } 

</script> 

</html> 

在這個頁面上,如果我進入Hi I'm Lucas作爲明文(不包括引號),與passwd密碼,我領回這樣的字符串:U2FsdGVkX1/S3TobCOdyJ7k7eaBhdFKRpJkDBTpV1D0=

如果我繼續點擊解密按鈕,我不會收到任何錯誤,但我只是得到48692049276d204c75636173的結果。

很顯然,我做錯了什麼,和我希望的幫助這裏:)

回答

1

this,似乎下面應該工作:

document.getElementById("decode").innerHTML = decrypted.toString(CryptoJS.enc.Utf8) 
+0

這並不工作,我會接受只要我被允許,答案就是這樣。謝謝! –

+0

請注意是否要求跟進?試圖找出如何確定解密是否失敗。如果解密被賦予了一個無效的密鑰,它會返回一個零字節的字符串,但是如果某些實際上加密了一個零字節的字符串,我想把它們放回去,而不是像給它們使用那樣給它們相同的消息完全錯誤的關鍵。 –

+1

@LucasKrupinski它看起來像'CryptoJS.AES.decrypt()'的結果是一個包含名爲'sigBytes'的屬性的對象,當解密成功時(但它沒有記錄AFAICS)應該>> 0。您也可以在純文本前添加一個已知字符串,解密後檢查解密後的文本是否包含該前綴。 – robertklep