2013-03-04 68 views
0

我使用sha1 alogorithm作爲散列密碼,&將它存儲在數據庫中。sha:散列值不匹配時,在不同的頁面上散列時

我曾嘗試以下,在aspx頁面

1. 的Login.aspx

function enc() 
    { 
    var x=document.getElementById("<%=txtPwd.ClientID %>").value; 
    var hash = CryptoJS.SHA1(x); 
    alert(hash); 
    alert(typeof hash); 
    return false; 
    } 

Changepwd.aspx

function enc() 
    { 
    var confirmp=$("#txtConfrimPassword").val(); 
    var hash = CryptoJS.SHA1(confirmp); 
    alert(hash); 
    document.getElementById("<%=txtConfrimPassword.ClientID%>").value = hash; 
    document.getElementById("<%=txtNewPassword.ClientID%>").value = hash; 
    return false; 
    } 

2嘗試:VAR ID2 = $ .sha1(字符串(ID));替代也..

但在這兩種情況下,更改密碼在登錄時不匹配

觀察:由頁相同的哈希值與值是不同的!

問題:如何從兩個頁面獲得相同的值。或者我錯了,我錯過了什麼? 請指導我。

編輯:

輸出:用於值:ABC1234

1登錄:c9b359951c09c5d04de4f852746671ab2b2d0994

2 changepwd:da39a3ee5e6b4b0d3255bfef95601890afd80709

+0

第一個明顯的故障排除步驟是檢查與'未加密的值的console.log()'。我可以在那裏看到一些警報,因此已經考慮到了這一點,但沒有與我們分享結果。此外,請注意,前導空間或尾隨空間可能難以發現,但會影響結果。 – 2013-03-04 10:25:38

+0

okey謝謝!現在我已經添加了結果。 – Emma 2013-03-04 10:36:26

+0

這不是我所要求的,但我認爲它也有助於解決問題。 – 2013-03-04 10:41:39

回答

0

da39a3ee5e6b4b0d3255bfef95601890afd80709爲空字符串SHA1哈希。您的confirmp變量根本不包含任何密碼。您可以使用任何支持的瀏覽器驗證控制檯:

var confirmp=$("#txtConfrimPassword").val(); 
console.log(confirmp); 

我有,你做了一個簡單的拼寫錯誤的印象:

txtConfrimPassword 
    ^^^^^^^ 
+0

是的,只是在控制檯上檢查,日誌是:未定義!謝謝,跟蹤這個問題。 – Emma 2013-03-04 10:50:41

+0

感謝Alvaro ..我的問題是排序.. – Emma 2013-03-04 10:58:59

+0

@ Alvaro:我們可以使用SHA1算法在服務器端哈希上實現相同的值嗎? – Emma 2013-03-04 12:09:21