从ord()解码

时间:2014-03-30 16:31:22

标签: python file python-3.x encryption

所以我编写了一个允许用户输入密码的程序,密码被很多ord()个字符移动了:

encrypt=str(ord(letter)*x+x*7) #where x is a random number picked from an array

然后将密码发送到文件:

passwrd=input("\nokay then " + name + " now enter your password which we will encrypt \nnew password:")
    x=int(random.choice(randomNumber)) #The randomNumber array
    myfile.write(str(x) + "\n")
    pasw_file=open('secerateStuff.txt', 'w')
    for letter in passwrd: #passwrd is the user input
        encrypt=str(ord(letter)*x+x*7)
        pasw_file.write(encrypt + "\n")
    pasw_file.close()

mypassword的一种可能编码是:

6    # In myfile
696  # In pasw_file
768
714
624
732
732
756
708
726
642

我的问题是,您如何将密码从ord()方法转换回原始字符? (与chr()有关的事情?)

感谢您的回复!

1 个答案:

答案 0 :(得分:4)

由于您使用代码编写salt,因此可以使用以下内容。

>>> passw = """6
696
768
714
624
732
732
756
708
726
642"""
>>> passw = map(int, passw.split())
>>> salt, passw = passw[0], passw[1:]
>>> salt
6
>>> passw
[696, 768, 714, 624, 732, 732, 756, 708, 726, 642]
>>> "".join([chr(elem/salt - 7) for elem in passw])
'mypassword'

在Python 3中,您可以执行以下操作,在我看来这看起来好多了。 (谢谢J.F. Sebastian

>>> salt, *passw = map(int, passw.split())