容易记住数据的指纹?

App*_*ges 8 hash visualization fingerprint

我需要为用户可以记忆或至少容易识别的RSA密钥创建指纹.我想到了以下想法:

  • 将SHA1哈希分成4比特的部分,并将它们用作贝塞尔样条曲线的坐标.绘制样条曲线并将该图片用作指纹.
  • 使用SHA1哈希作为某些分形算法的输入.对于给定的输入,结果需要是唯一的,即输出在一半时间内不能是实心方形.
  • 将SHA1哈希映射到单词列表中的条目(用于拼写检查器或密码列表).这将创建一个由真实单词组成的密码.
  • 使用其他大型数据集(如Google地图)(将SHA1哈希映射到地图坐标并使用地图区域作为指纹)而不是单词列表

还有其他想法吗?我确信这已经以某种形式实施.

Tho*_*nin 5

OpenSSH包含类似"可视主机密钥"的名称.试试这个:

ssh -o VisualHostKey=yes somesshhost
Run Code Online (Sandbox Code Playgroud)

哪个somesshhost是运行SSH服务器的机器.它将以十六进制打印出服务器密钥的"指纹",并作为ASCII艺术图像打印出来,如下所示:

+--[ RSA 2048]----+
|   .+            |
|   + o           |
|  o o +          |
|   + o +         |
|  . o E S        |
|   + * .         |
|    X o .        |
|   . * o         |
|   .o .          |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

或者像这样:

+--[ RSA 1024]----+
|        .*BB+    |
|       . .++o    |
|        = oo.    |
|       . =o+..   |
|        So+..    |
|        ..E.     |
|                 |
|                 |
|                 |
+-----------------+
Run Code Online (Sandbox Code Playgroud)

显然,这是受本文中描述的技术的启发.OpenSSH是开源的,具有类似BSD的许可证,因此您可以简单地重用它们的代码(它似乎在key.c文件,函数中key_fingerprint_randomart()).