首页 > 解决方案 > 谐音替换密码 Python

问题描述

我正在尝试制作一个谐音替换密码,其中最常见的字母被多个其他符号替换,例如,如果我的明文是“EEEEEEE”,则 E 将被替换为几个不同的符号,在此代码中将是“ %“ 和 ”-”

我现在拥有的是这个

def encryption():
    plaintext = "EEEEEEE"
    plaintext = plaintext.replace("E", "%" "-")
    print(plaintext)
encryption()

我打算让密文看起来像这样“%--%-%-”,其中字母 E 将被我选择的 2 个符号随机替换,但最终发生的是我得到“%-% -%-%-%-%-%-",它将每个单独的 E 替换为所有符号,因此给出 14 个字符而不是原来的 7 个字符。

我也尝试过使用 random 模块,但我最终得到“%%%%%%%”或“-------”的一半时间,但从未在同一次尝试中随机使用这两个符号。

那么我如何才能让我的代码能够用“%”和“-”随机替换每个单独的 E 呢?

标签: pythonencryptioncryptography

解决方案


我认为您需要遍历字符串以实现这种随机性。

import random
def encryption(plaintext):
  ret = ""
  for i in range(len(plaintext)):
    ret += ("%" if random.random() > 0.5 and (plaintext[i] in ["a", "e", "i", "o", "u"]) else "-")
  return ret

推荐阅读