当我在python中编写status = gpg.decrypt_file(f, passphrase='password', output='output.txt')
时。
我可以解密文件。
当我写password='password'
status = gpg.decrypt_file(f, passphrase=password, output='output.txt')
时
我也可以解密文件。
但是当我写作
ff = open("4.txt",'rb')
temp = ff.readline()
password = temp[0:len(temp)-2]
status = gpg.decrypt_file(f, passphrase=password, output='output.txt')
我无法解密该文件,temp
为password\r\n
,因此password
是密码'
谢谢。
答案 0 :(得分:0)
passphrase_infile_path = "lorem.txt"
with open(passphrase_infile_path, 'r') as passphrase_infile:
passphrase_line = passphrase_infile.readline()
passphrase = passphrase_line.rstrip('\n')
这样密码就行了,因为你只有那些没有换行符的字符。
import gnupg
gpg = gnupg.GPG()
crypto_infile_path = "ipsum.gpg"
plaintext_outfile_path = "dolor.txt"
with open(crypto_infile_path, 'rb') as crypto_infile:
status = gpg.decrypt_file(
crypto_infile,
passphrase=passphrase,
output=plaintext_outfile_path)
首先,请注意temp[0:len(temp)-2]
更具惯用性地写为temp[:-2]
。
此表达式除了序列temp
的最后两项外,其他所有项。
由于temp
是一个字节序列,因此总是修剪该序列的最后两个字节。
>>> line = b'rabbit\r\n'
>>> line[:-2]
'rabbit'
>>> line = b'rabbit\n'
>>> line[:-2]
'rabbi'
这不是从输入线修剪掉线的可靠方法。
相反,在文本模式下打开文件,您将获得规范化的换行符和文本输入。然后,使用str
内置方法按字符操作它。