ITPub博客

首页 > 区块链 > 区块链 > 哈希竞猜游戏系统开发技术逻辑(Demo方案)

哈希竞猜游戏系统开发技术逻辑(Demo方案)

原创 区块链 作者:Tg_StPv888 时间:2023-03-02 16:48:02 0 删除 编辑

  哈希算法(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博客 ” ,链接:https://blog.itpub.net/70016646/viewspace-2937892/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专业区块项目开发团队:18028578624微電

注册时间:2022-04-13

  • 博文量
    158
  • 访问量
    95697