雜湊競猜遊戲系統開發技術邏輯(Demo方案)

Tg_StPv888發表於2023-03-02

  雜湊演演算法(Hash Algorithm)即雜湊演演算法的直接音譯。


  我們可以透過特定的計算方法,利用任意長度的輸入(例如文字等資訊)生成一個固定長度的字串。這個字串就是該輸入的雜湊值。


  雜湊表(HashTable,也叫雜湊表),是根據鍵名(Key)直接訪問對應記憶體儲存位置的資料結構。


  其實現原理是透過雜湊函式(也叫雜湊函式)將元素的鍵名對映為陣列下標(轉化後的值叫做雜湊值或雜湊值),然後在對應下標位置儲存記錄值。當我們按照鍵名查詢元素時,可以使用同樣的雜湊函式,將鍵名轉化為陣列下標,從對應的陣列下標位置讀取資料


  顯然,雜湊表使用了陣列支援按照下標隨機訪問資料的特性,所以雜湊表其實就是陣列的一種擴充套件,由陣列演化而來。可以說,沒有陣列,就沒有雜湊表。我們知道,陣列訪問元素的時間複雜度是O(1),所以雜湊表也是一樣(不考慮雜湊函式的複雜度的話),因此非常高效。


 HashHelper.GetHashedBytes(HashType.MD5,"test");


  HashHelper.GetHashedBytes(HashType.MD5,"test".GetBytes());


  HashHelper.GetHashedBytes(HashType.MD5,"test","testKey");


  HashHelper.GetHashedBytes(HashType.MD5,"test".GetBytes(),"testKey".GetBytes());


  HashHelper.GetHashedString(HashType.MD5,"test");


  HashHelper.GetHashedString(HashType.SHA1,"test".GetBytes());


  HashHelper.GetHashedString(HashType.SHA256,"test","testKey");


  HashHelper.GetHashedString(HashType.MD5,"test".GetBytes(),"testKey".GetBytes());


  New API Sample


  有了新的API以後可以怎麼簡化呢,來看下面的示例:


  var bytes="test".GetBytes();


  var keyBytes="test-key".GetBytes();


  //HMACMD5


  var hmd5V1=HMACMD5.HashData(keyBytes,bytes);


  var hmd5V2=HashHelper.GetHashedBytes(HashType.MD5,bytes,keyBytes);


  Console.WriteLine(hmd5V2.SequenceEqual(hmd5V1));


  //HMACSHA1


  var hsha1V1=HMACSHA1.HashData(keyBytes,bytes);


  var hsha1V2=HashHelper.GetHashedBytes(HashType.SHA1,bytes,keyBytes);


  Console.WriteLine(hsha1V2.SequenceEqual(hsha1V1));


  //HMACSHA256


  var hsha256V1=HMACSHA256.HashData(keyBytes,bytes);


  var hsha256V2=HashHelper.GetHashedBytes(HashType.SHA256,bytes,keyBytes);


  Console.WriteLine(hsha256V2.SequenceEqual(hsha256V1));


  //HMACSHA384


  var hsha384V1=HMACSHA384.HashData(keyBytes,bytes);


  var hsha384V2=HashHelper.GetHashedBytes(HashType.SHA384,bytes,keyBytes);


  Console.WriteLine(hsha384V2.SequenceEqual(hsha384V1));


  //HMACSHA512


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70016646/viewspace-2937892/,如需轉載,請註明出處,否則將追究法律責任。

相關文章