C#中產生SHA512

要在C#中生成帶有鹽值(Salt)的SHA-512哈希值,首先需要生成或提供一個鹽值,然後將這個鹽值與原始輸入(比如用戶的密碼)結合在一起,最後對這個結合後的字符串進行哈希處理。下面的示例代碼展示了如何生成一個隨機鹽值,以及如何使用這個鹽值和用戶輸入來產生SHA-512哈希值。

在這個例子中,GenerateSalt方法用於生成一個指定大小的隨機鹽值。這個鹽值是通過RNGCryptoServiceProvider類生成的隨機字節數組,然後將其轉換為Base64字符串以便於存儲和使用。

GenerateSHA512String方法現在接受一個額外的參數salt,並將這個鹽值與輸入字符串結合後進行哈希處理,其餘步驟與之前相同。

使用鹽值可以提高密碼存儲的安全性,因為即使兩個用戶使用了相同的密碼,由於鹽值的唯一性,他們的哈希值也會不同,從而增加了破解的難度。在實際應用中,每個用戶的鹽值應該是唯一的,並且與用戶的密碼哈希值一起存儲。

VB中產生SHA512

在VB.NET中生成SHA512哈希值,可以使用.NET框架中的System.Security.Cryptography命名空間提供的SHA512類。以下是一個示例函數,展示如何使用這個類來對字符串生成SHA512哈希值。此函數接受一個要加密的字符串(例如用戶的密碼)和一個鹽值,然後返回該字符串的SHA512哈希值。

這個函數首先將輸入字符串和鹽值結合,然後使用UTF8編碼轉換成字節數組。接著,它創建一個SHA512實例並使用ComputeHash方法來計算輸入數據的哈希值。最後,它將得到的哈希字節數組轉換為一個16進位的字符串(去掉中間的連接符”-“),並返回這個字符串。

可以將此函數用於需要生成SHA512哈希的任何地方,比如用戶密碼的儲存或驗證過程中。使用鹽值可以提高密碼儲存的安全性,因為它使得即使對於相同的密碼,其生成的哈希值也會不同,從而增加了破解的難度。

StorePrecedure中產生SHA512

在SQL Server中,您可以直接使用內置函數來生成SHA-512哈希值。不過,要留意,直到最近的版本,SQL Server 才原生支持的加密函數SHA-512。如果使用的是SQL Server 2016(或更新版本),可以使用HASHBYTES函數,該函數支持多種哈希算法,包括SHA-512。

以下是一個示例,說明如何在存儲過程(Stored Procedure,簡稱SP)中使用HASHBYTES函數來生成SHA-512哈希值:

在這個存儲過程中,@Input是您想要哈希的字符串(例如用戶的密碼),而@Salt是用於增加哈希安全性的鹽值。CONCAT函數用於結合輸入字符串和鹽值,HASHBYTES函數則用來生成SHA-512哈希。最後,將生成的二進位哈希值轉換為NVARCHAR格式以方便查看和儲存。

注意,將敏感數據(如密碼)的哈希處理工作放在資料庫層做,需要確保資料庫的安全性得到了妥善的處理和配置,以避免安全風險。此外,當將密碼或其他敏感信息發送到資料庫進行哈希處理時,確保使用安全的連接,防止數據在傳輸過程中被攔截。

前一篇文章資安密碼工程,驗證密碼,要在 VB.NET程式或用 SP 判斷?
下一篇文章資安密碼工程,ASP.NET VB與C#中產生安全的SALT
學經歷 淡江大學資訊管理研究所 諸銘科技軟體發開部經理與教育事業部總監 專長 網路創業、網路行銷、創業貸款、個資保護、資訊安全、程式設計(ASP.NET VB.NET MVC C# Core 6) 資安與個資證照:CompTia Security+ , ISO 27701。 演講與課程經歷 工研院講師 勞動部微型創業鳳凰貸款顧問 台北市社會局 衛福部中央健保署 新北市政府勞工局 管科會 中國生產力中心 中衛中心 中山管理教育基金會 中華軟協 南科產協 青創會 青創會內訓 臺北青年職涯發展中心 經濟部樂活創業人才班 中小企業總會 外貿協會 高雄醫學大學 雲林科技大學 台北醫學大學 銘傳大學 明新科大 中台科大 台灣科技大學 師範大學 大葉大學 台北城市大學 聖約翰科技大學 萬能科技大學 輔英科大 明新科大 美和科大 嘉南藥理大學 東南科大 亞太創意技術學院 格致商工 霧峰農工 三重商工 新店戒護所 台南就業處 台灣知識庫 台北景福扶輪社 富邦人壽 台北國際書展

回覆留言

Please enter your comment!
Please enter your name here