【BTC】密码学原理

主要是根据北京大学肖臻老师讲的《区块链技术与应用》公开课所撰写的笔记

哈希(Hash)

简介

密码学中用的哈希函数被称为密码散列函数(Cryptographic hash function),又被称为加密散列函数,是散列函数的一种。它被认为是一种单向函数,也就是说极其难以由散列函数输出的结果,回推输入的数据是什么。这种散列函数的输入数据,通常被称为消息(Message),而它的输出结果,经常被称为消息摘要(Message digest)或摘要(Digest)。在信息安全中,有许多重要的应用,都使用了密码散列函数来实现,例如数字签名消息认证码。密码学中要求的两个重要的性质:抗碰撞性(Collision resistance)隐蔽性(Hiding),以及比特币(BTC)要求的第三个特性:Puzzle friendly

抗碰撞性(Collision resistance)

"哈希碰撞"是指输入不相等的值XY,使得XY的求出哈希值相等
即:X≠Y ,H(X)=H(Y) , H()表示哈希函数
到目前为止,没有哪个哈希函数能够在数学上证明是抗碰撞性(Collision resistance)的,也就是说从理论上是无法证明的,只能通过实践中的经验。
有些哈希函数经过长期的实践检验,我们认为它是抗碰撞性(Collision resistance)的,可是后来被世人找到了人为制造哈希碰撞的方法,比如像比较著名的哈希函数:MD5。

用途

比如有一个消息(M),取它的哈希值:M → H(M),求得哈希值结果假如是:Digest,用Digest来检测对M的篡改;
举例:有人修改了消息M,就会使得哈希值H(M)也会改变;
如果结合抗碰撞性(Collision resistance)来说:无法找到另外一个消息(X),使得H(X) = H(M)
总结得出:没有什么办法能够篡改内容而又不被检测出来

  • 自己有个文件,把它上传到服务器上,想使用到这个文件的时候把它从服务器上下载下来。那怎么检测到你所下载下来的文件是否已经被其他人篡改过了呢?

    可以在上传文件(M)的时候,给这个(M)求一个哈希值M → H(M),自己本地保存这个哈希值H(M),然后从服务器上再把这个之前所上传的文件下载下来后,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值