0

我正在寻找一种或多种加密算法,这些算法可以以人类必须可读的方式加密密码。

例如,如果我提供密码

StackOverflow

该算法应该给我:

G0aThiR4i s0ieFer

所以我想获得一个易于人类阅读的加密密码(不是带有特殊字符或数千个字符的奇怪字符串)。

有适合这种需求的算法吗?

4

4 回答 4

11

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库的引用之外,我找不到实现提及。

于 2013-11-06T22:20:08.270 回答
8

你的问题在很多方面让我感到困惑,导致了从 16 位哈希结果创建一个完全人类可读的段落的愚蠢想法。还有什么比英文句子更易读的?

为了维护哈希密码的安全性,算法如下:

  1. 使用任何基本技术散列用户密码。
  2. 通过我的特殊HashViewer运行哈希
  3. 享受英国化的美好。

例如,如果这个 Base16 哈希是输入:

c0143d440bd61b33a65bfa31ac35fe525f7b625f10cd53b7cac8824d02b61dfc

HashViewer 的输出是这样的:

烟雾喜欢狗。日志挖掘积压。原木吞噬青蛙。Grogs 将木屐斩首,而狗则将雾概念化。雾迎接木屐。齿轮将疣猪概念化。尽管沼泽挤压雾,但沼泽会挖出狗。齿轮光顾目录。齿轮玩弄齿轮。疣猪使熟食变得虚弱;不幸的是,木屐杂耍齿轮。疣猪讨厌青蛙;相反,烟雾会摧毁齿轮。雾将炎魔概念化。每当 polywogs 与蛋酒搭讪时,烟雾就会迎接烟雾。原木将青蛙斩首。蛋酒将木屐概念化。狗将疣猪斩首。(烟雾)

(括号中的最后一个词是剩下的词)

在这个辉煌的段落形式中,我们可以查看两个单独的哈希值并轻松比较它们,看看它们是否不同。

作为一个额外的功能,有一个函数可以将英文文本转换回哈希字符串。

享受!

于 2013-11-07T17:27:21.543 回答
2
Step 1) Apply regular encryption algorithm.
Step 2) Base 26-encode it using letters a thru z
Step 3) ???
Step 4) Profit!

更酷的是获得英语的字母双字母分布。选择一个简单的伪随机数算法,并使用非人类可读的密码哈希作为种子。然后使用算法根据一个字母在英语中跟在它前面的字母之后的可能性来组成一个单词。你会得到真正听起来像英语的单词,并且始终来自同一个种子。不过,发生碰撞的可能性可能非常高。

于 2013-11-06T22:21:27.937 回答
0

EncryptedPassword = Base64(SHA1(UTF8(Password) + Salt))

密码是字符串
Salt 是加密的强随机字节 []

UTF8: 字符串 -> 字节[]
SHA1: 字节[] -> 字节[]
Base64: 字节[] -> 字符串

加密密码是字符串

存储(加密密码、盐)。

输入您想要的任何加密算法,而不是 SHA1。

例如,如果密码是,StackOverflow您将获得加密的密码LlijGz/xNSRXQXtbgNs+UIdOCwU

于 2013-11-06T22:24:43.820 回答