首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 2005 雜湊值產生與比較(一):MD5CryptoServiceProvider 與 ByteArrayToString 實作

     編輯:關於C語言

命名空間引入

using System.Text;
using System.Security.Cryptography;
using System.Windows.Forms;

雜湊值產生流程

1. 宣告變數

string sourceData;
byte[] sourceBytes;
byte[] hashBytes;

2. 字串轉位元組陣列

sourceData = "MySourceData";
sourceBytes = ASCIIEncoding.ASCII.GetBytes(sourceData);

3. 計算 MD5 雜湊

hashBytes = new MD5CryptoServiceProvider().ComputeHash(sourceBytes);

結果為 128-bit (16 位元組) 雜湊值。

4. 轉十六進位字串顯示

lblHashResult.Text = sourceData + "\n" + ByteArrayToString(hashBytes) + "\n";

private string ByteArrayToString(byte[] input)
{
    StringBuilder sb = new StringBuilder(input.Length * 2);
    for (int i = 0; i < input.Length; i++)
        sb.Append(input[i].ToString("X2"));
    return sb.ToString();
}

雜湊值比較目的

  • 檢測資料是否被竄改
  • 不透露實際值的前提下比較兩組資料
  • 十六進位字串比較最簡單;位元組陣列比較較通用

建立第二組雜湊值進行比較

sourceData = "NotMySourceData";
sourceBytes = ASCIIEncoding.ASCII.GetBytes(sourceData);
byte[] newHash = new MD5CryptoServiceProvider().ComputeHash(sourceBytes);
bool equal = false;
// 比較邏輯見下篇

可用的雜湊演算法

類別演算法長度
MD5CryptoServiceProviderMD5128-bit
SHA1CryptoServiceProviderSHA-1160-bit
SHA256ManagedSHA-256256-bit
SHA512ManagedSHA-512512-bit

安全性需求高者建議使用 SHA-256 或以上;MD5 僅適合非安全性關鍵的完整性檢查。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved