哈希竞猜游戏是根据什么原理搭建?
哈希应用程序有许多不同的名称,有时称为摘要,有时称为校验和,有时称为指纹。事实上,它的意思是相同的,也就是说,哈希可以用来表示数据本身
因为如果数据在存储或传输过程之中发生任何变化,其哈希将发生变化。由于这一独特特性,哈希函数最常见的功能是执行数据完整性检查,即数据无损检查
(I)文件验证
常见的验证算法包括奇偶校验和CRC验证。这两种验证可以在一定程度之上检测和纠正数据传输中的通道错误,但它们无法防止恶意破坏数据,也无法抵抗数据篡改
MD5算法的“数字指纹”特性使其成为目前使用最广泛的文件完整性验证算法,通常用于下列两种情况:
1。文件传输验证
将传输文件的MD5哈希值与源文件进行比较,以确保一致性,这可以从统计之上确保两个文件完全相同。它通常用于检查文件传输过程之中是否存在错误,以确保文件在传输过程之中未被恶意篡改。许多下载工具软件还使用MD5的特性来确保用户在断点处多次继续下载之后下载文件的正确性
另一个更高级的解决方案是所谓的代码签名。文档接收者不仅可以验证文档的完整性,还可以根据他对证书颁发者和证书所有者的信任来决定是否接受文档。浏览器在下载和运行插件和Java小程序时使用此模式。例如,我们从服务器下载软件。如果软件被黑客更改,那么我们下载的软件不是原始软件。如果是银行客户,则可能存在账户被盗的风险。通过哈希操作,您可以通过哈希操作获得下载软件的哈希值,然后将哈希值与软件发布者发布的哈希值进行比较,以了解软件是否被篡改
2。保存二进制文件系统的数字指纹
许多系统管理和安全软件提供了文件系统完整性评估功能。系统初始安装之后,为文件系统建立基本校验和数据库。由于哈希校验和的长度非常小,因此可以方便地存储在容量非常小的存储介质之上。将来,可以定期或根据需要再次计算文件系统的检查值。一旦发现与原始保存的值不匹配,则表明文件已被非法修改,或被病毒感染,或被特洛伊木马程序替换
(II)数字签名
哈希算法是现代密码系统的重要组成部分。由于非对称算法的运算速度较慢,单向哈希函数在数字签名协议之中起着重要作用。在该签名协议之中,双方必须提前协商双方支持的哈希函数和签名算法
签名者首先计算数据文件的哈希值,然后使用非对称算法对非常短的哈希值进行数字签名。当另一方验证签名时,它首先计算数据文件的哈希值,然后使用非对称算法验证数字签名。哈希值的数字签名在统计上等同于文件本身的数字签名。首先,可以将数据文件本身与其哈希值分开保存,也可以在不存在数据文件本身的情况之下进行签名验证。其次,在某些情况之下,签名密钥可能与解密密钥相同,也就是说,如果对数据文件进行签名,则其操作与非对称解密操作相同,这是非常危险的。恶意破坏者可能会向您发送一个文件,试图欺骗您将其解密为需要您签名的文件。因此,当对任何数据文件进行数字签名时,仅对其哈希值进行签名是安全的
(III)身份验证协议
有一种称为“质询身份验证模式”的身份验证协议:需要身份验证的一方向要身份验证的一方发送随机字符串(“质询”),认证方将随机字符串与其自身的认证密码一起散列,然后将其返回给认证方,认证方将将接收到的散列值与散列操作的结果进行比较,并在其自己的一端与另一方的认证密码字(“认证”)。如果相同,则在统计之上可以认为另一方拥有密码字,即通过身份验证
(IV)网站注册
当用户注册并提交用户名和密码时,用户名直接保存到网站数据库,但密码不直接保存,但密码转换为哈希,然后将哈希值保存到网站数据库之中。因此,即使是网站管理员也无法获得用户的密码。如果公司的数据库泄露,用户的密码仍然安全
当用户登录网站并输入密码提交给服务器时,服务器也会执行相同的哈希操作。由于输入数据没有变化,哈希没有变化,登录成功
(V)区块链和加密货币
比特币系统之中主要使用两个加密哈希函数,分别是SHA-256和ripemd160
以SHA-256为例,这是用于构建区块链的主要密码哈希函数。无论是块的头信息还是事务数据,该哈希函数都用于计算相关数据的哈希值,以确保数据的完整性。同时,在比特币系统之中,基于查找给定前缀的sha256哈希值,设计了一种用于工作量证明的共识机制;Sha256还用于构造比特币地址,即识别不同的用户
在比特币系统中,SHA-256算法的一个主要用途是完成PoW(工作量证明)计算。而区块链就可以看作一类使用哈希指针的链表,这个链表链接一系列的区块,每个区块包含数据以及指向表中前一个区块的指针。区块链中,前一个区块指针由哈希指针所替换,因此每个区块不仅仅告诉前一个区块的位置,也提供一个哈希值去验证这个区块所包含的数据是否发生改变。
利用区块链构造一个防篡改的日志系统,在这个系统中,基于区块链的日志节点链表被用来存储数据,链表节点通过哈希指针链接,新节点追加在日志链表的尾部。同时,日志链表的头哈希指针所指向的头节点内容不可改变。若日志链表中的某个节点的数据被