2016-11-10 62 views
0

我正在處理一個需要使用客戶端現有Sitefinity數據庫進行用戶登錄的項目。我只能用PHP構建,並且試圖將密碼存儲在PHP中,並將它們與Sitefinity數據庫中的散列密碼進行比較。PHP中的Sitefinity密碼哈希值

我碰到了,this question,它解釋了Sitefinity是如何散列的,這對開始有幫助,但我不完全理解它,因爲它顯然是用ASP編寫的。我需要找出是否有一個PHP的等價物,以及如何工作。

我在網上搜索了一些指導,但到目前爲止沒有運氣。任何幫助,將不勝感激。

回答

1

在檢查Sitefinity哈希將PHP代碼如下所示:

<?php 
    //clear password 
    $passwordInput = "password"; 

    //from sf_users column [salt] 
    $userSalt = "2E1C1CEF99E6EF066E9C803974D17419"; 

    //from sf_users column [passwd] 
    $userPassword = "G1MJiJw3zpBVdZBKViZUfEvTpZA="; 

    //from App_Data\Sitefinity\Configuration\SecurityConfig.config attribute "validationKey" 
    $validationKey = "24152EC6E594970CBEA98B5C10D878D65EF73964AAF44F1CCD3E0FBE95A5F2EFC89C0124B9B025581D38ED6EC846453249FD998ABDAE9453302B8BAB97BA1D0C"; 

    $str = $passwordInput.$userSalt; 

    $utfString = mb_convert_encoding($str, "UTF-16LE"); 

    echo $userPassword == base64_encode(hash_hmac('sha1', $utfString, hex2bin($validationKey), true))? 'true' : 'false'; 

?> 
+0

非常感謝你這一點。不幸的是,我沒有得到這個功能輸出和Sitefinity在它的數據庫中產生的匹配。你會知道是否有其他可能導致差異的變量? – Ian

+0

我在Sitefinity實例上檢查了它,哈希值相等 –

+0

我將確保驗證密鑰等是正確的,然後重試。感謝您的幫助。 – Ian