#看得懂的#区块链知识请跟踪加入牧笛(mudi977612)的私人群
--------我们一起知识兑现。
在MIT媒体实验室发现IOTA的哈希函数中发现了“加密漏洞”之后,IOTA价格下跌了百分之十五。现在IOTA 已经修复了这个问题,但是我们还是需要理解加密货币出现的 bug 是怎么回事儿。
解释一下哈希函数(HASH函数):
哈希函数就是把任意长的输入字符串变化成固定长的输出字符串的一种函数。一般系统用户的密码就是用哈希函数加密之后保存的,MD5加密就是哈希函数中的一种,将任意长的密码输出成固定长度的字符串,并且不能根据这个字符串倒推回密码明文,所以你在别人的交易系统里的密码,即使是开发这个系统的程序员也不会知道你的密码的明文内容,举例:
MD5(love) = b5c0b187fe309af0f4d35982fd961d7e
MD5(123456)= e10adc3949ba59abbe56e057f20f883e
MD5(Bitchain发的文章都不错) =0d14143864311757cbc1b252eb784744
哈希函数存在的意义就是将结果和被加密的内容一一对应,但是输入的方的内容是无限的(任何文字任何长度,甚至可以是一部小说),输出是有限的(长度固定数字加英文符号),所以一个好的哈希函数一个最基本的要求是,不同的内容加密结果要不一样。区块链中,交易双方使用的签名就是利用哈希函数产生输出不一样,从而辨别发送交易的人的身份。
如果对于不同的内容产生了一样的哈希值,叫哈希碰撞,哈希碰撞的后果是什么,想想一下,我创建了一个加密哈希函数F用在区块链中辨别交易人的身份,它有个bug,有时候会将两个不一样的私钥哈希运算后成了相同的签名字符串:
F(我的私钥) = aaa1
F(张三的私钥) = aaa1
我们知道,发送币给别人是通过私钥签名的来保障安全,当我知道我的私钥和张三私钥签名后的字符串是一样的,那么我在不知道张三的私钥的情况下可以替张三发消息,也可以替张三花他的币......
网友评论