【问题标题】:Conditional swap of string characters in python? (Dynamic Substitution Cipher)python中字符串字符的条件交换? (动态替换密码)
【发布时间】:2017-07-28 11:10:30
【问题描述】:

我刚刚完成了一个小的 viginere 密码,我正在考虑尝试通过在每个字符加密后在 sbox 中添加两个字符的交换来使其动态化。

问题是,无论我在哪里看到有一些关于交换字符串中的字符的信息,要交换的字符的位置都必须写在代码本身中。有没有办法让要交换的字符取决于另一轮函数的结果?

一些澄清:所以在我的代码顶部我有:

a = 'abcdefghijklmnopqrstuvwxyz'

然后在我拥有的加密功能中:

for p,k in zip(plaintext,keystream):
    pt = a.index(p)
    kt = a.index(k)
    c = pt + kt
    if c > 25:
        c -= 25
    c = a[c]
    ciphertext += c

所以我的问题是,如果我想在明文中的每个字符被加密后在a 中交换 2 个字符,并且让交换的字符取决于 a.index(p) 和 @ 的值,该怎么办? 987654325@每个被加密的字符?怎么做呢?

【问题讨论】:

    标签: python encryption dynamic swap substitution


    【解决方案1】:

    这样的事情会起作用:

    if not p == k:
        x, y = p, k if p < k else k, p
        a = a[:x] + a[y] + a[x+1:y] + a[x] + a[y+1:]
    

    这会占用第一个字符之前的所有内容,然后使用另一个字符代替它,然后是两个字符之间的所有内容,然后用第一个字符替换第二个字符,最后是第二个字符之后的所有内容

    【讨论】:

      最近更新 更多