以人类可读的格式加密密码

时间:2013-11-06 22:09:57

标签: algorithm encryption

我正在寻找一种或多种加密算法,可以加密密码,加密文本必须是人类可读的。

例如,如果我提供密码

StackOverflow

算法应该给我:

G0aThiR4i s0ieFer

所以我希望人们可以轻松读取加密密码(不是带有特殊字符或数千个字符的奇怪字符串)。

有哪些算法符合这种需求?

4 个答案:

答案 0 :(得分: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位密钥,这是数据大小的基础。源数据可以被截断或扩展以匹配基数。

Spec&在C @ http://tools.ietf.org/html/rfc1751

中实施

目前尚不清楚。除了spec& amp;中的一个,我找不到实现提及引用丢失的python库。

答案 1 :(得分:7)

你的问题在很多方面使我感到困惑,导致从基础16哈希结果创建一个完全人类可读的段落的大胆想法。什么比英语句子更可读?

为了保持散列密码的安全性,算法如下:

  1. 使用任何基本技术散列用户密码。
  2. 通过我的特殊HashViewer
  3. 运行哈希
  4. 享受Anglicized善良。
  5. 例如,如果此Base16哈希是输入:

    c0143d440bd61b33a65bfa31ac35fe525f7b625f10cd53b7cac8824d02b61dfc
    

    HashViewer的输出是这样的:

      

    烟雾喜欢狗。日志发现积压。日志吞食青蛙。 Grogs斩首障碍物和狗概念化雾。木头迎接木.. Cogs概念化疣猪。尽管沼泽挤压了雾,但博格斯仍然发掘了狗。 Cogs光顾目录。 Cogs玩弄齿轮。疣猪使酒糟透了;不幸的是,木cl玩弄齿轮。疣猪讨厌青蛙;相反,烟雾斩首齿轮。雾概念化balrogs。每当polywogs与蛋酒搭配时,烟雾就会迎面而来。原木斩断青蛙。木槿概念化木..狗斩首疣猪。 (烟雾)

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

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

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

    享受!

答案 2 :(得分:2)

Step 1) Apply regular encryption algorithm.
Step 2) Base 26-encode it using letters a thru z
Step 3) ???
Step 4) Profit!

更酷的是获得英语的字母大文字发行版。选择一个简单的伪随机数算法,并使用非人类可读的密码哈希对其进行种子设定。然后根据字母在英语语言之前跟随字母的可能性,使用算法来构成一个单词。你会得到真正的英语单词,并且始终是同一个种子。但是,碰撞的可能性可能不合时宜地高。

答案 3 :(得分:0)

EncryptedPassword = Base64(SHA1(UTF8(密码)+盐))

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

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

EncryptedPassword是字符串

存储(EncryptedPassword,Salt)。

使用您想要的任何加密算法而不是SHA1。

例如,如果密码为StackOverflow,则会获得加密密码LlijGz/xNSRXQXtbgNs+UIdOCwU