【发布时间】:2014-07-21 18:44:01
【问题描述】:
我试图弄清楚如何在 Python 中加密一个列式转置密码,给定一个明文大写字符串和一个任意长度的数字键。例如,如果键是 3124,字符串是 'IHAVETWOCATS',它会像这样组织字符串:
3124
IHAV
ETWO
CATS
然后首先返回第 1 列中的字符,然后返回第 2 列中的字符,以此类推,直到最终返回加密字符串 'HTAAWTIECVOS'。到目前为止,我知道我需要使用累加器,并且我一直在玩弄使用字典的想法,但我完全被卡住了。以下是我尝试过的一些功能:
def columnar(plaintext,key):
cipher=''
acc=0
for i in range(len(key)):
while acc<(len(plaintext)/len(key)):
cipher=cipher+plaintext[i+acc*5]
acc=acc+1
return(cipher)
^这只会返回几个字母,而不是适当长度的字符串。
def columnar(plaintext,key)
values={}
seqlist=[]
nextvalue=1
indices=rand(len(key))
for letter in plaintext:
for i in indices:
if letter==key[i]:
values[i]=nextvalue
nextvalue=nextvalue+1
for i in indices:
seqlist.append(values[i])
return seqlist
^上面的函数返回一个 KeyError: 0 错误。 非常感谢您的帮助!
【问题讨论】:
标签: python encryption python-3.x multiple-columns transpose