875819173010b917b228ea13a263f4b4.gif

【CSDN 编者按】这篇文章探讨了如何以不同的方式(如emoji、词语、颜色等)来表示 git 哈希值。作者首先引用了《深入浅出密码学》中的一段话,讨论了为什么哈希值通常以十六进制表示,然后提出了自己的想法,即使用超出 ASCII 的字符来表示哈希值。文章最后,作者分享了他的一些实验结果,并表示这是一个有趣的小实验,虽然在实际应用中可能不会使用,但探索信息位的不同表示方式很有趣。

原文链接:https://ntietz.com/blog/representing-git-hashes-weird-ways/

未经允许,禁止转载!

作者 | ntietz.com      译者 | 明明如月

责编 | 夏萌

出品 | CSDN(ID:CSDNnews)

在《深入浅出密码学(Real-World Cryptography)》一书中,有一个引人深思的说法。当谈到为什么哈希值通常用十六进制表示时,作者如此陈述:

有多种方式可以将二进制数据编码成人类可读形式,而最常见的两种编码是十六进制和base64。随着基数的增大,显示二进制字符串所需的空间减少,但终究会达到人类可读字符的极限。

那么,我们何时耗尽人类可读的字符?如果我们使用 ASCII 之外的东西会怎样呢?

我的第一个想法是用表情符号来表示哈希值,以获得更大的人类可读性和区分度高的符号空间。之后,我想出了几个我想尝试的:

  • 表情符号

  • 单词,类似于密码短语

  • 颜色

下面是我某个仓库中最近三次提交,以这些不同方式表示:

十六进制:

  • f7f05111ddb22b58fdad8bee63a3cd2bcea43398

  • afed35d15a2d8c59e3a9f695732553999593c51d

  • 0dd0c241906eb6720c0e4fe1e06a90f777453cc5

表情符号:

  • 💮👭🏽⚙️🇹🇲🇹🇴🟫🚬🧔 🏼♀️🧍🏽♂👮🏾🧑 🏽❤💋🏾🧝🏼👩 🏽❤💋🏽🥉

  • 🧑🏼🎨🚧🌡👩🏼🏛🧜🏻😩🚻💗💊🗳️🤹🏽♀👳🏾🥈

  • 👮🏻👩🏿🦱🇵🇱🤽🏿♂🐞👩 🏻❤👩🏾🧑💻🫱🏿🫲🏾🐩🧑🏿👩🏾💼🧑🍳⛪

单词(选自EFF单词列表):

  • unburned path scrambled demotion awning outpour echo museum iciness payee perish vending account

  • ripple wrongly untaken undermine serve handgrip festivity blend bankbook capitol egging outback absolve

  • naturist tartly engraver haphazard renovate douche guidable tidiness nuttiness catlike unearth pox abdomen

颜色:

59e2535c4aa5e89ca58bf4f88dcef50e.png

......

就个人而言,从纯视觉角度来看,我最喜欢颜色这一个,但它带来了许多可访问性问题。颜色空间可能需要调整,以便更容易在哈希之间进行视觉区分。我认为将其与哈希本身的十六进制表示相结合可能也是最好的,所以我们在现有表示的基础上增加了另一层,以使事物更容易区分,而不是仅依赖于一种新的表示。

无论如何,这是一个有趣的小实验!虽然这不是我会在真实应用中使用的东西,但探索信息表示的不同方式也很有意思。

这篇文章的代码可以在我的代码仓库中找到。

你是否也做过类似有意思的探索?欢迎在评论区和大家一起分享。

参考链接

  1. 《深入浅出密码学(Real-World Cryptography)》:https://www.manning.com/books/real-world-cryptography

  2. EFF单词列表:https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases

  3. 代码仓库:https://git.sr.ht/~ntietz/sketches/tree/main/item/hashes

推荐阅读:

▶黄仁勋甩出最强生成式 AI 处理器;ChatGPT 回答编程问题错误率超过 50%;Go 1.21 发布|极客头条

“一定把你的代码初稿,全部扔掉!”

▶开源之辩:大模型开源的尺度在哪里?

b641406635f50d3944d9bdd8939fc196.jpeg

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐