【问题标题】:Homophonic Substitution Cipher Python谐音替换密码 Python
【发布时间】:2018-10-20 03:33:35
【问题描述】:

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

我现在拥有的是这个

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

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

我也尝试过使用随机模块,但我最终得到了“%%%%%%%”或“-------”的一半时间,但从来没有同时使用这两个符号试试看。

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

【问题讨论】:

    标签: python encryption cryptography


    【解决方案1】:

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

    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
    

    【讨论】:

    • 你不能像那样分配给字符串元素。