gpt4 book ai didi

python - 加密柱状转置密码

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:20 24 4
gpt4 key购买 nike

我正在尝试找出如何在给定明文大写字符串和任意长度的数字 key 的情况下在 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(明文,键)
值={}
序列表=[]
下一个值=1
指数=随机数(len(键))
对于明文字母:
对于索引中的 i:
如果字母==键[i]:
值[i]=下一个值
下一个值=下一个值+1
对于索引中的 i:
seqlist.append(值[i])
返回序列表

^以上函数返回KeyError: 0 错误。非常感谢您的帮助!

最佳答案

def encode(txt,key):
sz = len(key) # how big are the columns
cols = list(map("".join,zip(*zip(*[iter(txt)]*sz)))) # list partitioned into columns
return "".join([cols[key.index(str(c))] for c in range(1,sz+1)])



encoded = encode("IHAVETWOCATS","3124")
print encoded

大概是这样吧

关于python - 加密柱状转置密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24872411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com