如何生成 Spellable hash 或 Pronounceable hash?

How do I produce Spellable hash or Pronounceable hash?

假设我想散列这个 Hello World!

我希望输出的是随机词(无意义),但它很容易(可能只对我而言)像这样说、发音或拼写: acolamesaba 或者 olapitozida

本例输出长度为11个字符。

我们知道元音 = (a,i,u,e,o) 和辅音 =(元音除外)

所以输出模式是:元音+辅音+元音+辅音+元音+辅音+...+元音

也许修改 sha256 和 md5 等常见哈希算法可以提供帮助。

从我的角度定义什么是无法拼写的哈希只是一个例子:cdhrswyxcew,所以它基本上不同于我的输出模式规则。

已解决! 修改后的 sha256

from hashlib import sha256

def spellableHash(inp):
  vowel = ['a','i','u','e','o']
  consonant = ['b','c','d','g','h','j','k','l','m','n','p','r','s','t','v','w','y']
  lenCons = len(consonant)
  lenVow = len(vowel)

  hashed = sha256(inp.encode())
  digested = hashed.digest()[:11]

  result=""
  for i,v in enumerate(digested):
    if i%2 == 0:
      result+=vowel[v%lenVow]
    else:
      result+=consonant[v%lenCons]
  return result

print(spellableHash("Hello World!")) #usuyuguware

有一种算法专门用于此目的,称为 Bubble Babble Binary Data Encoding。您采用普通的加密哈希,例如 SHA-256,然后使用 Bubble Babble 算法对其进行编码。

它在元音和辅音之间交替,并包含少量冗余以检测错误。