[英]What's wrong in this SHA-256 Javascript code?
var secure;
var authentic;
secure = prompt("Enter password","");
alert(secure);
var c1 = CryptoJS.SHA256(secure);
alert(c1);
authentic = prompt("Enter password","");
alert(authentic);
var c2=CryptoJS.SHA256(authentic);
alert(c2);
if(c1==c2)
{
alert("hi");
}
else
{
alert("bye");
}
我使用腳本“ http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/sha256.js ”
解釋:什么,我想要做的是比較散列密碼。如果輸入的兩個密碼(安全和真實)已經散列(分別為 c1 和 c2),它必須向我顯示 'hi'。 但我發現它總是向我顯示“再見”。
問題:當我比較 c1 和 c2 時,我得到的結果總是“再見”,盡管當我使用警告框顯示 c1 和 c2 時,它們的值是相同的。
我對散列有點陌生。 非常感謝您的幫助!
從文檔:
您返回的哈希值還不是字符串。 它是一個 WordArray 對象。 在字符串上下文中使用 WordArray 對象時,它會自動轉換為十六進制字符串。
當您在 JavaScript 中比較對象時,您正在測試它們是否是同一個對象,而不是它們是否是相同的對象。
由於您創建了兩個 WordArray,因此您正在比較兩個不同(但可能相同)的對象。
您需要將它們轉換為字符串。
if ( (''+c1) == (''+c2) )
或者
if ( c1.toString() == c2.toString() )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.