前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >哈希竞猜游戏系统开发详细流程及方案

哈希竞猜游戏系统开发详细流程及方案

原创
作者头像
VC_MrsHu288
发布2022-06-28 15:49:23
4890
发布2022-06-28 15:49:23
举报

  首先,什么是哈希算法

  哈希算法,也称为散列算法和杂凑算法,是一种从任意文件创建小数字指纹的方法。哈希算法和指纹一样,是用简短的信息保证文件唯一性的标志。这个符号关系到文件的每一个字节,很难找到逆规律。因此,当原始文件发生变化时,其标志值也会发生变化,从而告诉文件用户当前文件不再是您需要的文件。

  哈希算法可以将任意长度的二进制明文映射到更短的二进制字符串,不同的明文很难映射到同一个哈希值。

  也可以理解为空间映射函数,从很大的值空间映射到很小的值空间。由于不是一一映射,哈希函数在转换后是不可逆的,也就是说不可能通过逆向运算和哈希值来恢复原来的值。

  什么是区块哈希值【Block hash】?

  区块哈希值是一段数据的DNA,每个区块哈希值都是唯一的、随机的且不可破解的。

  什么是区块链?

  区块链从本质上讲,它是一个共享数据库,存储于其中的数据或信息。具有不可伪造、全程留痕、可以追溯、公开透明、集体维护等特征。

  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

  var hsha512V1=HMACSHA512.HashData(keyBytes,bytes);

  var hsha512V2=HashHelper.GetHashedBytes(HashType.SHA512,bytes,keyBytes);

  Console.WriteLine(hsha512V2.SequenceEqual(hsha512V1));

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档