簡體   English   中英

PHP 中的 SHA256 加鹽散列與 C# 中的不同

[英]SHA256 Hashing with Salt in PHP not same as in C#

所以我得到了一個 ASP.NET web 應用程序,它使用加鹽的散列法將密碼存儲在 mysql 數據庫中。 我現在試圖允許用戶通過 php 網站使用與我的 web 應用程序相同的憑據登錄。 我使用下面的代碼來比較用戶輸入和 php 中的 hash

$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#中用來生成hash的代碼:

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 的新手。有人可以幫忙嗎?

在 php 你有salt + password ,在 .net 你有pw + salt

這將給出不同的結果。 通過使用修復:

$pw = $extpassword . $salt;

或者

byte[] hash = sha256.ComputeHash(System.Text.Encoding.UTF8.GetBytes(salt + pw)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM