gpt4 book ai didi

python - 任何可读和可发音的 Python 密码生成器?

转载 作者:太空狗 更新时间:2023-10-29 17:55:13 26 4
gpt4 key购买 nike

在 Python 中生成随机字符串非常简单(如 Python entropy 所示)。但是有没有任何 Python 项目可以生成既有点可读又可读的密码字符串?可读性是指不要将 0 和 O 都放在同一个字符串中,等等。我不在乎它是否具有最大 熵,只是比我可能选择的更好。 :)

最佳答案

如果你真的只是在寻找“比我能弥补的更好”的东西,并且“可发音”,那么也许只需使用 random.sample() 从列表中提取辅音-元音-辅音假音节:

import string
import itertools
import random

initial_consonants = (set(string.ascii_lowercase) - set('aeiou')
# remove those easily confused with others
- set('qxc')
# add some crunchy clusters
| set(['bl', 'br', 'cl', 'cr', 'dr', 'fl',
'fr', 'gl', 'gr', 'pl', 'pr', 'sk',
'sl', 'sm', 'sn', 'sp', 'st', 'str',
'sw', 'tr'])
)

final_consonants = (set(string.ascii_lowercase) - set('aeiou')
# confusable
- set('qxcsj')
# crunchy clusters
| set(['ct', 'ft', 'mp', 'nd', 'ng', 'nk', 'nt',
'pt', 'sk', 'sp', 'ss', 'st'])
)

vowels = 'aeiou' # we'll keep this simple

# each syllable is consonant-vowel-consonant "pronounceable"
syllables = map(''.join, itertools.product(initial_consonants,
vowels,
final_consonants))

# you could trow in number combinations, maybe capitalized versions...

def gibberish(wordcount, wordlist=syllables):
return ' '.join(random.sample(wordlist, wordcount))

然后您只需选择适当数量的“单词”:

>>> len(syllables)
5320
>>> gibberish(4)
'nong fromp glosk zunt'
>>> gibberish(5)
'samp nuv fog blew grig'
>>> gibberish(10)
'strot fray hag sting skask stim grun prug spaf mond'

我的统计数据有点模糊,但这对于非 NSA 来说可能已经足够了目的。请注意,random.sample() 无需替换即可运行。我还应该指出,如果恶意方知道您正在使用这种方法,那么它很容易受到字典攻击。一撮 salt会有所帮助。

更新:对于那些感兴趣的人,可以在 https://github.com/greghaskins/gibberish 获得更新的和可 fork 的版本。 .

关于python - 任何可读和可发音的 Python 密码生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5501477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com