MD5訊息摘要演算法
MD5(Message Digest)訊息摘要演算法
1、實際上,MD5演算法是一種雜湊(hash)演算法(又叫摘要演算法,指紋演算法),不是一種加密演算法。任何長度的任意內容都可以用MD5計算出雜湊值。其主要作用就是“驗明真身”,字串與檔案均可使用MD5演算法。2、MD5長度一般是32位的16進位制數字符串(比如71f396e4134a1160d90bb1439876df31),MD5值的個數是有限的,但是源資料是無限的,因此存在著不同的內容產生相同MD5值的概率。因此MD5演算法不可逆,也就是隻能得到內容對應的MD5值,無法由MD5值反推內容。但是對不同的內容產生相同MD5值的概率非常非常非常低!
3、在資料庫中,Password欄位儲存使用者輸入密碼的MD5值,這樣系統管理員、黑客也不知道使用者的密碼是什麼,也就避免了使用者的其他系統密碼被利用的問題判斷密碼正確性的方法:計算使用者輸入的密碼的MD5值,與資料庫儲存的MD5值進行比較,如果相等則認為密碼正確。所以很多網站只有密碼重置的功能,沒有密碼找回的功能。
4、MD5演算法理論上是不可逆的,因此攻擊的唯一辦法就是碰撞。兩個不同的內容生成相同的MD5值,這就叫碰撞。MD5演算法的碰撞概率非常小。找到一個內容雖然不同但是產生同樣MD5的內容即可。所謂的MD5破解,並不是真正的破解了MD5演算法,而是縮短了MD5碰撞的時間。
5、通過C#程式碼,計算字串的MD5值
/*
* 獲取字串的MD5值
*/
public static string GetMD5String(string msg)
{
StringBuilder stringBuilder = new StringBuilder();
//建立一個計算MD5值得物件
using (MD5 md5=MD5.Create())
{
byte[] bytes = System.Text.Encoding.Default.GetBytes(msg);
//呼叫該物件的方法進行MD5值計算
byte[] md5Byte = md5.ComputeHash(bytes);
for (int i = 0; i < md5Byte.Length; i++)
{
stringBuilder.Append(md5Byte[i].ToString("x2"));
}
}
//將計算後的結果以字串的方式返回
return stringBuilder.ToString();
}
6、通過C#程式碼,計算檔案的MD5值
/*
* 獲取檔案的MD5值
*/
public static string GetMD5StringFromFile(string filepath)
{
StringBuilder stringBuilder = new StringBuilder();
//建立一個計算MD5值得物件
using (MD5 md5=MD5.Create())
{
using (FileStream fileStream=File.OpenRead(filepath))
{
//呼叫該物件的方法進行MD5值計算
byte[] md5Byte = md5.ComputeHash(fileStream);
for (int i = 0; i < md5Byte.Length; i++)
{
stringBuilder.Append(md5Byte[i].ToString("x2"));
}
}
}
//將計算後的結果以字串的方式返回
return stringBuilder.ToString();
}
相關文章
- Java安全——訊息摘要Java
- 詳解 MD5 資訊摘要演算法演算法
- MD5Util (MD5加密摘要演算法)。加密演算法
- 密碼學基礎:編碼方式、訊息摘要演算法、加密演算法總結密碼學演算法加密
- 摘要與加密的區別(以MD5演算法為例)加密演算法
- Android 安全加密:訊息摘要Message DigestAndroid加密
- Android安全加密:訊息摘要Message DigestAndroid加密
- .NET Core加解密實戰系列之——訊息摘要與數字簽名演算法解密演算法
- 密碼學系列——訊息摘要(c#程式碼實操)密碼學C#
- 快速瞭解常用的訊息摘要演算法,再也不用擔心面試官的刨根問底演算法面試
- MD5演算法演算法
- MD5加密演算法加密演算法
- 使用Apache的DigestUtils類實現雜湊摘要(SHA/MD5)Apache
- RocketMQ 訊息整合:多型別業務訊息-普通訊息MQ多型型別
- RocketMQ 訊息整合:多型別業務訊息——定時訊息MQ多型型別
- 訊息機制篇——初識訊息與訊息佇列佇列
- MD5演算法詳解演算法
- 五分鐘搞懂摘要演算法演算法
- 解析 RocketMQ 業務訊息——“事務訊息”MQ
- 解析 RocketMQ 業務訊息--“順序訊息”MQ
- 自定義訊息獲取訊息(轉)
- im客戶端生成訊息序列號演算法客戶端演算法
- 利用redis的hash結構搭建訊息服務(發訊息,訂閱訊息,消費訊息,退訂)Redis
- RocketMQ 原理:訊息儲存、高可用、訊息重試、訊息冪等性MQ
- 訊息中介軟體—RocketMQ訊息消費(三)(訊息消費重試)MQ
- MD5雜湊加密演算法加密演算法
- 訊息中介軟體—RocketMQ訊息傳送MQ
- MQTT-保留訊息和遺囑訊息MQQT
- 自定義訊息和對訊息的理解
- SQLSTATE 訊息SQL
- Windows訊息Windows
- vue---元件間傳遞訊息(父子傳遞訊息,兄弟傳遞訊息)Vue元件
- RabbitMQ訊息佇列(五):Routing 訊息路由MQ佇列路由
- OC訊息機制,訊息轉發機制
- Android訊息機制Message訊息池Android
- 深入解析MFC訊息響應和訊息路由路由
- 直播原始碼網站,訊息圖示在收到訊息時展示訊息條數原始碼網站
- MD5演算法--C++實現演算法C++