C#使用MD5算法對密碼進行加密的示例代碼
一、涉及到的知識點
1.MD5
MD5(Message Digest Algorithm 5)是一種被廣泛使用的“消息-摘要算法”。“消息-摘要算法”實際上就是一個單項散列函數(shù),數(shù)據(jù)塊經(jīng)過單向散列函數(shù)得到一個固定長度的散列值,數(shù)據(jù)塊的簽名就是計算數(shù)據(jù)塊的散列值,MD5算法的散列值為128位。
2.使用基類的 Create 方法來創(chuàng)建 MD5 對象
應該使用其基類的 Create 方法來創(chuàng)建 MD5 對象。如果還是用MD5CryptoServiceProvider 類,那么將會得到警告SYSLIB0021。
使用 MD5.Create() 方法來創(chuàng)建 MD5 對象更加簡潔易讀。這種方法也適用于其他過時的加密類,如 SHA1CryptoServiceProvider、SHA256CryptoServiceProvider 等。通過使用基類的 Create() 方法,代碼將更加簡潔、易讀且符合最佳實踐。
using System.Security.Cryptography; // ... MD5 md5 = MD5.Create();
3.對每個字節(jié)進行加密并將其轉換為十六進制字符串
str += md5data[i].ToString("x").PadLeft(2, '0');//對遍歷到的字節(jié)進行加密
具體來說,這段代碼執(zhí)行以下操作:
- 使用 for 循環(huán)遍歷字節(jié)數(shù)組 md5data 中的每個字節(jié)。
- 將當前字節(jié)轉換為十六進制字符串,使用 “x” 格式說明符表示。例如,字節(jié)值 0x1A 將轉換為字符串 “1a”。
- 使用 PadLeft 方法將轉換后的十六進制字符串左對齊,確保其長度為 2。如果字符串長度小于 2,將用字符 ‘0’ 在左側填充。例如,字符串 “1a” 將被轉換為 “01a”。
- 將處理后的十六進制字符串追加到字符串變量 str 中。
- 通過這些操作,原始字節(jié)數(shù)據(jù)將被轉換為一個包含十六進制字符的字符串。這是 MD5 加密過程的一部分,最終將生成一個 32 個字符的 MD5 哈希值。
4.ComputeHash(Byte[])
計算指定字節(jié)數(shù)組的哈希值。
public byte[] ComputeHash (byte[] buffer); 參數(shù) buffer Byte[] 要計算其哈希代碼的輸入。 返回 Byte[] 計算所得的哈希代碼。 例外 ArgumentNullException buffer 為 null。 ObjectDisposedException 對象已被釋放。
二、使用MD5算法對密碼進行加密
// 使用MD5算法對密碼進行加密 using System.Security.Cryptography; namespace _155 { class Program { /// <summary> /// 對遍歷到的字節(jié)進行加密 /// </summary> /// <param name="strPwd">輸入的待加密的字符串</param> /// <returns name="str">返回加密后的值</returns> public static string Encrypt(string strPwd) { MD5 md5 = MD5.Create(); byte[] data = System.Text.Encoding.Default.GetBytes(strPwd);//將字符編碼為一個字節(jié)序列 byte[] md5data = md5.ComputeHash(data); //計算data字節(jié)數(shù)組的哈希值 md5.Clear(); //清空MD5對象 string str = ""; //定義一個變量,用來記錄加密后的密碼 for (int i = 0; i < md5data.Length - 1; i++) { str += md5data[i].ToString("x").PadLeft(2, '0'); } return str; } static void Main(string[] args) { ArgumentNullException.ThrowIfNull(args); while (true) { Console.Write("請輸入密碼:"); string P_str_Code = Console.ReadLine()!; Console.WriteLine("使用MD5加密后的結果為:" + Encrypt(P_str_Code)); } } } } //運行結果: /* 請輸入密碼:123456789Qq 使用MD5加密后的結果為:6d28b4834bd6a9e384be01c131a8f2 請輸入密碼:123456789QQ 使用MD5加密后的結果為:46e7640c5b2ddeab142d71d872163b 請輸入密碼:123456789qq 使用MD5加密后的結果為:9c32d6523556378b8b1632720f7ab1 請輸入密碼: */
到此這篇關于C#使用MD5算法對密碼進行加密的示例代碼的文章就介紹到這了,更多相關C# MD5算法密碼加密內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C#設計模式之Template模板方法模式實現(xiàn)ASP.NET自定義控件 密碼強度檢測功能
這篇文章主要介紹了C#設計模式之Template模板方法模式實現(xiàn)ASP.NET自定義控件 密碼強度檢測功能,簡單介紹了模板方法模式的定義、原理及檢測密碼強度的相關使用技巧,需要的朋友可以參考下2017-09-09