C# compare different Encoding pattern between UTF8 and UTF32 based on Md5

来源:https://www.cnblogs.com/Fred1987/archive/2020/01/01/12129976.html
-Advertisement-
Play Games

I had validated that different encoding mode can generate different result,they are not identical. Besides,the File.ReadAllBytes may based on UTF8 bec ...


 1 using System;
 2 using System.Text;
 3 using System.IO;
 4 using System.Security.Cryptography;
 5 
 6  static void Main(string[] args)
 7         {
 8             CompareFileGetBytes("lyf.txt");
 9             Console.ReadLine();
10         }
11 
12  static void CompareFileGetBytes(string fileFullName)
13         {
14             byte[] fileReadAllBytes = File.ReadAllBytes(fileFullName);
15             string fileReadAllBytesMd5 = GetBytesMd5(fileReadAllBytes);
16 
17             string utf8Md5 = string.Empty;
18             using (StreamReader reader = new StreamReader(fileFullName))
19             {
20                 string textResult = reader.ReadToEnd();
21                 byte[] utf8Bytes = Encoding.UTF8.GetBytes(textResult);
22                 utf8Md5 = GetBytesMd5(utf8Bytes);
23             }
24 
25             string utf32Md5 = string.Empty;
26             using (StreamReader utf32Reader = new StreamReader(fileFullName))
27             {
28                 string textResult = utf32Reader.ReadToEnd();
29                 byte[] utf32Bytes = Encoding.UTF32.GetBytes(textResult);
30                 utf32Md5 = GetBytesMd5(utf32Bytes);
31             }
32 
33 
34             Console.WriteLine($"fileReadAllBytesMd5:{fileReadAllBytesMd5},utf8Md5:{utf8Md5}");
35 
36             if (string.Equals(fileReadAllBytesMd5, utf8Md5))
37             {
38                 Console.WriteLine($"{nameof(fileReadAllBytesMd5)} is equal with {nameof(utf8Md5)}!");
39             }
40             else
41             {
42                 Console.WriteLine($"{nameof(fileReadAllBytesMd5)} is not equal with {nameof(utf8Md5)}!");
43             }
44 
45             Console.WriteLine($"utf8Md5:{utf8Md5},utf32Md5:{utf32Md5}");
46             if (string.Equals(utf8Md5, utf32Md5))
47             {
48                 Console.WriteLine($"{nameof(utf8Md5)} is equals with {nameof(utf32Md5)}");
49             }
50             else
51             {
52                 Console.WriteLine($"{nameof(utf8Md5)} is not  equals with {nameof(utf32Md5)}");
53             }
54         }
55 
56         static string GetBytesMd5(byte[] bytesData)
57         {
58             StringBuilder md5Builder = new StringBuilder();
59             using(MD5CryptoServiceProvider md5=new MD5CryptoServiceProvider())
60             {
61                 byte[] md5Bytes = md5.ComputeHash(bytesData);
62                 for(int i=0;i<md5Bytes.Length;i++)
63                 {
64                     md5Builder.Append(md5Bytes[i].ToString("x2"));
65                 }
66             }
67             return md5Builder.ToString();
68         }

I had validated that different encoding mode can generate different result,they are not identical.

Besides,the File.ReadAllBytes may based on UTF8 because they render the identical result!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 事務一般是指資料庫事務,是指作為一個程式執行單元執行的一系列操作,要麼完全執行,要麼完全不執行。事務就是判斷以結果為導向的標準。 一.spring的特性(ACID) (1).原子性(atomicity) 原子性就是一個不可分割的工作單元。簡單的說,就是指事務包含的所有操作要麼全部成功,要麼全部失敗回 ...
  • 背景 上文JDK8中的HashMap源碼寫了HashMap,這次寫ConcurrentHashMap ConcurrentHashMap源碼 /** * Maps the specified key to the specified value in this table. * Neither th ...
  • 背景 很久以前看過源碼,但是猛一看總感覺挺難的,很少看下去。當時總感覺是水平不到。工作中也遇到一些想看源碼的地方,但是遇到寫的複雜些的心裡就打退堂鼓了。 最近在接手同事的代碼時,有一些很長的python腳本,沒有一行註釋。就硬著頭皮一行一行的讀,把理解的都加上註釋,這樣一行行看下來,終於知道代碼的意 ...
  • 新電腦clone項目後發現Project Interpreter無法配置, New environment 選擇後無法應用, 滑鼠懸停在Location 提示 Environment location directory is not empty . 原因是項目push時, 項目下的venv文件夾也 ...
  • crm業務的流程圖,都是比較精簡的內容,後面有機會的話會繼續擴展 ...
  • 前面已經講解了task的運行、阻塞、同步、延續操作、取消等!今天我們就專門來聊聊關於async/await的那一些事,分析其實現原理,通過該文章你也該對async的使用還有更加清晰的理解 ...
  • 本筆記摘抄自:https://www.cnblogs.com/liyangLife/p/4797583.html,記錄一下學習過程以備後續查用。 一、文件系統 1.1文件系統類的介紹 文件操作類大都在System.IO命名空間里,FileSystemInfo類是所有文件系統類的基類。FileInfo ...
  • 你應當知道的ORM的底層細節,DataReader高效使用的姿勢。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...