入门区块链之我填的第一个坑
最近打算入坑币圈,看了一些文章,不得要领。忽然看到阮一峰老师有几篇入门文章,便认真来学了。然后发现文中一点错误,然后,竟然还有错误,然后,找到了错误的源头,不禁兴奋,文以志之。
读阮一峰《区块链入门教程》,读到“举例来说,字符串123的哈希是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个哈希。”时,忽然,觉着哪里不对。算了一下,256 位,十六进制表示,该是 64 个字符,这一段看起来有点短。数了一下,果然,40 个字符。顿时觉着世界不美好了,印象里消息摘要是有个 256 的,40 是个什么鬼?
立刻查了一下,消息摘要有多种,sha0 和 sha1 是 160 位的,sha2 有 256 位,还有其他位,md5 128 位。 哦哦,欧了,原来是 sha 摘要的。
事情本来到这里就完了,愉快地读下面的文章,你好我好大家好,世界很美好。
但是,手欠,写了几行代码,想验证一下这个哈希码的正确性。
运行 :
天哪,对不起来啊,世界又不好了。问题出在哪里呢,阮大,这么牛叉的人物,该不会出错吧。我哪里出问题了呢?我的代码是不是有问题。
于是,到网上找了一些在线工具,验证了一下 123 的摘要,发现,我是对的。
但有一个漏洞,就是,没有 sha0 的方法,查 java 文档,没有,找工具,也看不到支持这个算法,后来用 linux shasum,仍然是没有这个算法。大概,太古老了,不安全了,废弃了。
鲁迅先生说过,你如果说我是错的,你最好证明你是对的。
这件事儿上,至少 40 个字符,我是数的清的,摘要算法,我是不太有把握的,于是,小心谨慎地给阮老师文章写了一下评论,探讨这个问题。
该吃饭了,但总感觉哪里不对。事儿解决不了,哪有心境吃饭呢。
这个字符串百度上有 2710 个索引,绝大多数是阮大的这篇文章。除了第三页这一条
从日期上看,这篇文章要早于阮大的文章 17 天,大概,阮大是从这里引用的。
看这篇文章,这个哈希码是一个 123.txt 文件的哈希码。这个文件是什么内容呢,产生了这个哈希码?看文章是原创,文件内容是什么,大概只有作者自己知道。于是,我就给作者留言,询问。但,什么时候能有回复,God knows。
常规推测,测试文件,不会搞得太复杂,一般也就新建一个空文件,测试用。于是,我也测试了一下。
很明显,空文件是不对的。
于是,我继续在我原来的代码上去测试和验证,因为这个哈希码不一定是 sha,还可能是 md5,尝试,空,空格,换行,1,123,123换行,...,忽然
这,这不对上了么!!
幸福来得太突然了,就好像在篮球场上,随手一抛投进了一个三分一样!兴奋的我原地转了三圈。
继续验证
嗯嗯,两篇文章的信息都对上了。
这才是完美世界,严谨,准确,确定。
愉快地做饭,吃饭。然后写这篇文章。
好了,这是我入门区块链填的第一个坑。
这个坑,大概是阮大随手一敲,多了个换行造成的。但,剩下的人看和引用的时候,就不验证一下么。这个世界有这么让人信任吗?
写这篇,不是想黑阮大,阮大英明神武,岂是我黑的了的。只是蒙了个三分,过于兴奋,不禁写写。
我去继续读阮大的教程,入门区块链了。
另外,欢迎关注我的微信订阅号 沉思的萝卜 。
转载于:https://my.oschina.net/sdyan/blog/1837847