gpt4 book ai didi

Python密码: how to build a complexer shifter system?

转载 作者:行者123 更新时间:2023-11-30 23:42:53 26 4
gpt4 key购买 nike

我想用python构建一个密码,它通过从左到右然后从右到左重复遍历移位器的数字来解码文本,并将字母表中的字母按相应的数字移动。

示例:

  • 变速杆:123
  • 文本:我喜欢Python
  • 过程:i+1=j,空间,l+2=n,i+3=l,k+3=n,e+2=g,空间,p+1=q,y+1=z ,t+2=v,h+3=j,o+3=q,n+2=p
  • 结果:j nlng qzvjqp

到目前为止的代码:

import string

numbers = ""

x = 3

while x < 10000:
numbers = numbers + str(x)
x += 1

shift = 221

#string.ascii_lowercase
letters = string.ascii_letters + string.punctuation + numbers
text = (raw_input("Please enter text"))

encoded = ''
for letter in text:
if letter == ' ':
encoded = encoded + ' '
else:
x = letters.index(letter) + shift
encoded = encoded + letters[x]

print encoded

到目前为止它使用了基本的编码方法。我很想知道如何在代码中实现上述编码系统。

最佳答案

这是您的优化版本(并且正在运行):

import string

shift = 221

letters = string.ascii_letters + string.punctuation + string.digits
text = raw_input("Please enter text\n")

e = ''.join(letters[letters.index(l) + shift % len(letters)]
if letters.index(l) is not None else ' ' for l in text)
print e

编辑带有数字的部分确实是错误的,因为它在您的编码序列中添加了重复的字母。这意味着编码文本无法被唯一解码。

Edit2:如果您想要安全的加密/解密,您需要像 AES 这样的现代算法。如果您希望自己实现或理解代码,RC4 是一个简单(但如果使用正确的话仍然安全)的替代方案。

Edit3:这是 Vigenere 的优化版本:

from itertools import cycle, izip
from operator import add, sub
from string import printable as alphabet

def vigenere(text, key, mode='encode'):
alen = len(alphabet)
key = cycle(key + key[-2:0:-1])
op = add if mode == 'encode' else sub
return ''.join(alphabet[op(alphabet.index(c),
alphabet.index(k)) % alen]
for c, k in izip(text, key))

c = vigenere('attack at dawn', 'secret', mode='encode')
print c # CHFBqN8BF8FoIO
print vigenere(c, 'secret', mode='decode')

关于Python密码: how to build a complexer shifter system?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153955/

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