所以我得到了一個 ASP.NET Web 應用程式,它使用帶鹽的散列將密碼存盤在 mysql 資料庫中。我現在正在嘗試允許用戶通過 php 網站使用與我的 Web 應用程式相同的憑據登錄。我使用以下代碼比較用戶輸入和 php 中的哈希
$pw = $salt . $extpassword;
if (!mb_check_encoding($pw, 'UTF-8')) {
$pw = mb_convert_encoding($pw, 'UTF-8');
}
return ($fromdb == base64_encode(hash('sha256',$pw, true)));
至于我在 c# 中用于生成哈希的代碼:
System.Security.Cryptography.SHA256Managed sha256 = new System.Security.Cryptography.SHA256Managed();
byte[] hash = sha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(pw salt));
return Convert.ToBase64String(hash);
我不確定為什么這不起作用,因為我對 php 完全陌生。有人可以幫忙嗎?
uj5u.com熱心網友回復:
在 php 中你有salt password,在 .net 中你有pw salt。
那會給出不同的結果。通過使用修復:
$pw = $extpassword . $salt;
要么
byte[] hash = sha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(salt pw));
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/430001.html
