2017-07-28 116 views
0

我刚刚完成了一个小小的viginere密码,我想通过在每个字符加密后在sbox中添加两个字符交换来尝试使其变为动态。python中的字符串字符的条件交换? (Dynamic Substitution Cipher)

问题是,在我看到的每个地方都有一些关于交换字符的信息时,要交换的字符的位置必须写在代码本身中。有没有办法做到这一点,所以要交换的角色依赖于另一个函数轮的结果?

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

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)a.index(k)。怎么会这样做呢?

回答

0

像这样的工作:

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:] 

这需要的一切行动,直到第一个字符,然后使用其它字符在其位,那么这两个字符之间的所有内容,并将其替换为第一第二字符,最后是第二个字符后的所有内容