C#實現MD5

來源:互聯網
上載者:User

標籤:app   dig   實現   linq   gen   碰撞   c#   pac   utf8   

什麼是MD5?

  MD5即Message-Digest Algorithm 5(資訊-摘要演算法5),用於確保資訊傳輸完整一致。是電腦廣泛使用的雜湊演算法之一,主流程式設計語言普遍已有MD5實現。

MD5的特點:

  • 壓縮性:任意長度的資料,算出的MD5值長度都是固定的。
  • 容易計算:從原資料計算出MD5值很容易。
  • 抗修改性:對原資料進行任何改動,哪怕只修改1個位元組,所得到的MD5值都有很大區別。
  • 強抗碰撞:已知原資料和其MD5值,想找到一個具有相同MD5值的資料(即偽造資料)是非常困難的。
 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Security.Cryptography; 6 using System.Text; 7 using System.Threading.Tasks; 8  9 namespace ConsoleApplication110 {11     public class MD5Helper12     {13         /// <summary>14         /// 計算位元組數組的 MD5 值15         /// </summary>16         /// <param name="buffer"></param>17         /// <returns></returns>18         public static string CalcMD5(byte[] buffer)19         {20             using (MD5 md5 = MD5.Create())21             {22                 byte[] md5Bytes = md5.ComputeHash(buffer);23                 return BytesToString(md5Bytes);24             }25         }26 27         /// <summary>28         /// 將得到的 MD5 位元組數組轉成 字串29         /// </summary>30         /// <param name="md5Bytes"></param>31         /// <returns></returns>32         private static string BytesToString(byte[] md5Bytes)33         {34             StringBuilder sb = new StringBuilder();35             for (int i = 0; i < md5Bytes.Length; i++)36             {37                 sb.Append(md5Bytes[i].ToString("X2"));38             }39             return sb.ToString();40         }41 42         /// <summary>43         /// 計算字串的 MD5 值44         /// </summary>45         /// <param name="str"></param>46         /// <returns></returns>47         public static string CalcMD5(string str)48         {49             byte[] buffer = Encoding.UTF8.GetBytes(str);50             return CalcMD5(buffer);51         }52 53         /// <summary>54         /// 計算流的 MD5 值55         /// </summary>56         /// <param name="stream"></param>57         /// <returns></returns>58         public static string CalcMD5(Stream stream)59         {60             using (MD5 md5 = MD5.Create())61             {62                 byte[] buffer = md5.ComputeHash(stream);63                 return BytesToString(buffer);64             }65         }66     }67 }

 

C#實現MD5

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.