中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

項目總結-MD5的使用

發布時間:2020-07-23 18:23:41 來源:網絡 閱讀:735 作者:孤鶩111 欄目:編程語言

MD5算法是一種散列(hash)算法(摘要算法,指紋算法),不是一種加密算法。任何長度的任意內容都可以用MD5計算出散列值。

 
MD5長度一般是32位的16進制數字符串。
理論上,MD5值的個數是有限的,但是源數據是無限的,因此存在著不同的內容產生相同MD5值的概率。因此MD5算法不可逆,也就是只能得到內容對應的MD5值,無法由MD5值反推內容。但是對不同的內容產生相同MD5值的概率非常非常非常低!
 
MD5算法理論上是不可逆的,因此***的唯一辦法就是碰撞。
 
1)使用MD5進行對字符串的操作,具體代碼實現:
     using System.Security.Cryptography;//需要導入這個命名空間
......   
        static void Main(string[] args)
        {
            Console.WriteLine("請輸入字符串,使用MD5加密 ...");
            string str = Console.ReadLine();
            string md5 = Md5ChuLiStr(str);
            Console.WriteLine(md5);
 
            Console.ReadKey();
        }
         private static string  Md5ChuLiStr(string msg)
        {
            //1.創建一個MD5對象
            MD5 md5 = MD5.Create();
 
            //2.把字符串變為一個byte數組
            //對于中文或者某些字符,采用不同的編碼生成的byte[]是不一樣的,
            //所以造成了采用不同編碼生成的md5值不一樣的情況。
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(msg);
 
            //3.將一個byte[]通過MD5計算得到一個新的byte[],新的byte[]就是計算md5后的結果。
            byte[] md5Buffer = md5.ComputeHash(buffer);
 
            //釋放資源
            md5.Clear();
 
            //4.將計算后的結果直接顯示為字符串
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < md5Buffer.Length; i++)
            {
                //x2:把每個數字轉換為16進制,并保留兩位數字。
                sb.Append(md5Buffer[i].ToString("x2"));
            }
            return sb.ToString();
        }
......
 
 
2)使用MD5進行對文件的操作,具體代碼實現:
     using System.Security.Cryptography;//需要導入這個命名空間
     using System.IO;//需要用到文件流等
...
       static void Main(string[] args)
        {
            Console.WriteLine("請輸入文件路徑,使用MD5加密 ...");
            string path = Console.ReadLine();
            string md5 = Md5ChuLiFile(path);
            Console.WriteLine(md5);
 
            Console.ReadKey();
        }
       private static string  Md5ChuLiFile (string path)
        {
            MD5 md5 = MD5.Create();
 
            using (FileStream fs = File.OpenRead(path))
            {
                byte[] md5Buffer = md5.ComputeHash(fs);//這里直接傳入文件流對象
                md5.Clear();
 
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < md5Buffer.Length; i++)
                {
                    sb.Append(md5Buffer[i].ToString("x2"));
                }
                return sb.ToString();
            }
        }
......
*:最后,產生的MD5值可以通過MD5計算器(CalcMD5.exe)進行對照。

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

应城市| 武城县| 石楼县| 岳西县| 临泽县| 洞口县| 和政县| 伊金霍洛旗| 芒康县| 双鸭山市| 犍为县| 德惠市| 乐平市| 揭阳市| 西畴县| 朝阳区| 河西区| 峨山| 抚顺县| 彩票| 广河县| 信宜市| 汝城县| 磐石市| 建水县| 安阳市| 阿鲁科尔沁旗| 光泽县| 桓仁| 永德县| 安吉县| 柏乡县| 花垣县| 托克逊县| 渝北区| 建瓯市| 岳池县| 长岭县| 兴海县| 临江市| 渑池县|