我正在寻找一种或多种加密算法,这些算法可以以人类必须可读的方式加密密码。
例如,如果我提供密码:
StackOverflow
该算法应该给我:
G0aThiR4i s0ieFer
所以我想获得一个易于人类阅读的加密密码(不是带有特殊字符或数千个字符的奇怪字符串)。
有适合这种需求的算法吗?
我正在寻找一种或多种加密算法,这些算法可以以人类必须可读的方式加密密码。
例如,如果我提供密码:
StackOverflow
该算法应该给我:
G0aThiR4i s0ieFer
所以我想获得一个易于人类阅读的加密密码(不是带有特殊字符或数千个字符的奇怪字符串)。
有适合这种需求的算法吗?
RFC 1751,它定义了“人类可读的 128 位密钥约定”——基本上只是位块到英文单词字符串的映射。
例如,128 位密钥:
CCAC 2AED 5910 56BE 4F90 FD44 1C53 4766
会成为
RASH BUSH MILK LOOK BAD BRIM AVID GAFF BAIT ROT POD LOVE
算法用于固定长度的 128 位密钥,这是数据大小的基础。可以截断或扩展源数据以匹配基数。
C中的规范和实现@ https://www.rfc-editor.org/rfc/rfc1751
这不是众所周知的。除了规范和对丢失的python库的引用之外,我找不到实现提及。
你的问题在很多方面让我感到困惑,导致了从 16 位哈希结果创建一个完全人类可读的段落的愚蠢想法。还有什么比英文句子更易读的?
为了维护哈希密码的安全性,算法如下:
例如,如果这个 Base16 哈希是输入:
c0143d440bd61b33a65bfa31ac35fe525f7b625f10cd53b7cac8824d02b61dfc
HashViewer 的输出是这样的:
烟雾喜欢狗。日志挖掘积压。原木吞噬青蛙。Grogs 将木屐斩首,而狗则将雾概念化。雾迎接木屐。齿轮将疣猪概念化。尽管沼泽挤压雾,但沼泽会挖出狗。齿轮光顾目录。齿轮玩弄齿轮。疣猪使熟食变得虚弱;不幸的是,木屐杂耍齿轮。疣猪讨厌青蛙;相反,烟雾会摧毁齿轮。雾将炎魔概念化。每当 polywogs 与蛋酒搭讪时,烟雾就会迎接烟雾。原木将青蛙斩首。蛋酒将木屐概念化。狗将疣猪斩首。(烟雾)
(括号中的最后一个词是剩下的词)
在这个辉煌的段落形式中,我们可以查看两个单独的哈希值并轻松比较它们,看看它们是否不同。
作为一个额外的功能,有一个函数可以将英文文本转换回哈希字符串。
享受!
Step 1) Apply regular encryption algorithm.
Step 2) Base 26-encode it using letters a thru z
Step 3) ???
Step 4) Profit!
更酷的是获得英语的字母双字母分布。选择一个简单的伪随机数算法,并使用非人类可读的密码哈希作为种子。然后使用算法根据一个字母在英语中跟在它前面的字母之后的可能性来组成一个单词。你会得到真正听起来像英语的单词,并且始终来自同一个种子。不过,发生碰撞的可能性可能非常高。
EncryptedPassword = Base64(SHA1(UTF8(Password) + Salt))
密码是字符串
Salt 是加密的强随机字节 []
UTF8: 字符串 -> 字节[]
SHA1: 字节[] -> 字节[]
Base64: 字节[] -> 字符串
加密密码是字符串
存储(加密密码、盐)。
输入您想要的任何加密算法,而不是 SHA1。
例如,如果密码是,StackOverflow
您将获得加密的密码LlijGz/xNSRXQXtbgNs+UIdOCwU
。