好的,前言我正在尝试编写一个接受字符串输入的加密程序,使用ord()函数将每个字符转换为整数,然后使用伪随机生成的数字序列进行移位。它本质上是一个vigenere密码程序,我几乎得到了它。我只是解密功能有问题,因为我不知道如何从加密消息中减去密钥,以便我可以解密它。
def input1():
mes = raw_input('> ').upper()
shiftl = []
while len(mes) > len(shiftl):
shiftl.append(random.randint(1,26))
return mes, shiftl
def encrypt(x,y):
h = []
for item in x:
h.append(ord(item) - 65)
e = [sum(i) for i in zip(h,y)]
return e
def decrypt(e, y):
u = [sum(i) for i in zip(e,-(y))]
d = []
for item in u:
d.append(chr(item + 65))
return d
这是我需要帮助的一条线。
u = [sum(i) for i in zip(e,-(y))]
我试图简单地在列表前添加 - 但是一元运算符不能在列表上运行。那么,从加密消息中减去此列表的最佳方法是什么?
答案 0 :(得分:1)
如果您有一个列表并且想要更改内容,请使用带有切片分配的列表推导:
a = [1, 3, 5]
a[:] = [-1*x for x in a]
print a
这个的输出是:
[-1, -3, -5]
答案 1 :(得分:0)
我很可能没有得到你想要的东西,但对于另一种情况:
def negList(list):
for(n in list):
n = -n
return list
list = negList(list)
抱歉,如果我弄错了。