Python 创建一个函数,使用元音=0辅音=1将二进制替换为单词
我正在尝试创建一个python程序来加密(模糊?)二进制代码,这样每个0将成为一个元音,每个1将成为一个辅音,并且将只有完整含义的单词:例如,bin编号10110将成为HELLO。下面的代码是我编写的程序,但我找不到执行“encription”的方法Python 创建一个函数,使用元音=0辅音=1将二进制替换为单词,python,python-3.x,cryptography,Python,Python 3.x,Cryptography,我正在尝试创建一个python程序来加密(模糊?)二进制代码,这样每个0将成为一个元音,每个1将成为一个辅音,并且将只有完整含义的单词:例如,bin编号10110将成为HELLO。下面的代码是我编写的程序,但我找不到执行“encription”的方法 有什么建议吗?我会生成一个字典,将位掩码映射到相应单词的列表中以供选择。假设您有一个文件words.txt,它如下所示: the quick brown fox jumped over lazy dog def main(): from
有什么建议吗?我会生成一个字典,将位掩码映射到相应单词的列表中以供选择。假设您有一个文件
words.txt
,它如下所示:
the
quick
brown
fox
jumped
over
lazy
dog
def main():
from random import choice
mask = generate_mask()
values = ["101", "1011", "101", "101"]
for value in values:
print(choice(mask[value]))
return 0
if __name__ == "__main__":
import sys
sys.exit(main())
此函数读取words.txt
中的每个单词,将元音映射到0
,将辅音映射到1
,并创建-并返回一个字典,其关键字可能是位掩码,相关值是对应单词的列表。我在这里做了一些假设——比如文件将只包含小写字符和分隔单词的换行符
def generate_mask():
from string import ascii_lowercase as alphabet
vowels = set("aeiou")
consonants = set(alphabet) ^ vowels
mapping = str.maketrans(
"".join(vowels) + "".join(consonants),
("0" * len(vowels)) + ("1" * len(consonants))
)
mask = {}
with open("words.txt", "r") as file:
for word in map(str.rstrip, file):
key = word.translate(mapping)
if key not in mask:
mask[key] = []
mask[key].append(word)
return mask
在本例中,返回的掩码将是一个字典,如下所示:
{
'110': ['the'],
'10011': ['quick'],
'11011': ['brown'],
'101': ['fox', 'dog'],
'101101': ['jumped'],
'0101': ['over'],
'1011': ['lazy']
}
>>>
正如您所看到的,fox
和dog
共享相同的位掩码,因此它们最终位于相同的列表中
然后,你会这样使用它:
the
quick
brown
fox
jumped
over
lazy
dog
def main():
from random import choice
mask = generate_mask()
values = ["101", "1011", "101", "101"]
for value in values:
print(choice(mask[value]))
return 0
if __name__ == "__main__":
import sys
sys.exit(main())
输出:
dog
lazy
fox
dog
>>>
那应该行的,谢谢。唯一的问题是找到一种方法来选择我应该将该值除以多少个字符,这样我就可以确定一个适合该值的单词是否存在。您可能需要在数字和字母中添加。偶数数字对应于0
,奇数数字对应于1
。这样你就可以填写不适合你的单词表的多余部分。