我有一個 .NET WPF 應用程式。
我創建了兩個帳戶,一個名為“final”的將被定義。此帳戶的密碼將定義為“Fnl666”。另一個名為“admin”的帳戶將在此系統中定義。
但管理員帳戶密碼必須保密(永遠不應該知道管理員密碼)。即使是我的專案源代碼,如果我查看它,我也不應該能夠以明文形式找到該管理員帳戶的密碼。您需要如何解決這個問題?
我曾想過使用密碼非對稱加密或在登錄的登錄頁面上輸入的哈希值會比較哈希資料庫值并與密碼進行比較。
你有什么建議?
如何在 .NET 和 SQL Server 的登錄頁面上隱藏管理員密碼?
登錄頁面
主頁
安全密碼哈希
資料庫截圖
這是我的哈希演算法:
public static string hashPassword(string password)
{
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
byte[] password_bytes = Encoding.ASCII.GetBytes(password);
byte[] encrypted_bytes = sha1.ComputeHash(password_bytes);
return Convert.ToBase64String(encrypted_bytes);
}
這是我的登錄頁面提交按鈕點擊
protected void btnLogin_Click(object sender, EventArgs e)
{
try
{
conn.Open();
SqlCommand cmd = new SqlCommand("Select * from tbl_Login where @P1=userName and @P2=password", conn);
cmd.Parameters.AddWithValue("@P1", TextBox1.Text);
cmd.Parameters.AddWithValue("@P2", hashPassword(TextBox2.Text));
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
if (hashPassword(TextBox2.Text) == ??)
{
Server.Transfer("loginSuccesful.aspx");
//Response.Redirect();
}
}
else
{
Server.Transfer("errorPage.aspx");
}
}
catch
{
Server.Transfer("errorPage.aspx");
}
}
uj5u.com熱心網友回復:
對于任何型別的應用程式,
加密:
- 您可以使用帶有隨機鹽的某種強哈希演算法(例如 BCrypt)對密碼進行哈希處理。
- 然后使用用戶特定的密鑰使用一些強加密演算法(如 AES-256)對散列密碼進行加密。
- 通過這種方式,您可以強力隱藏任何人的密碼。
解密:
- 您必須首先使用當前用戶的密鑰解密密碼,然后您必須使用相同的鹽再次對用戶輸入的密碼進行散列(可能將鹽存盤在資料庫中)并與資料庫檢查相同的散列密碼并讓它們進入應用程式。
Always Encrypted:如果您再次想要對 SQL 資料庫進行一些保護,您可以在 SSMS 上使用 Always Encrypted 來加密表的敏感列。
我認為我的回答與您有關。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/409835.html
標籤:
下一篇:無法從系統方法呼叫chcp
