我正在尝试用Python编写一个加密程序,它接受包含文本的文件,通过加密方案运行,并将加密文本输出到文件中。我还必须追加以后用于文件解密的IV和盐。
我有两个问题,第一个:我将IV写入文件,然后是盐,然后是加密密钥,然后是密文。但文件看起来像这样:
b'\xcc\xc0\x0bL\x85\x04\x11:8\xce\xd6H\x1d^\xf5U'b'\xd6!\xe6\xd2Y\x17\x7f;\xc3\xea
\xd2Wj\xc3Q\xed'b'+\x90\x87Z\xde\x87\x1c8\xfdDl_\x8f\x8e\xbc\x97&4\xc6\r\xfa\xe0
\x1b\x98\x949\xd2\x10\x13\xdfb@'b'\xb2\xd4\x96\xb7D^\xf08\xa0\xa3\xba\x95\x89\r\xc3h'
这不是我想要的,因为你仍然可以看到b'xxx'b'yyy'的符号,这是不好的,因为它提供了文件结构的线索。我怎样才能解决这个问题,能够在文件中写入几个16字节的密钥,然后写入任意数量的密文字节。
我的第二个问题。当我尝试从加密文件读入时,它将其作为:
b"b'\\xcc\\xc0\\x0bL\\"
所以它就像读取b''表示法并将其包含在更多b''表示法中一样,这就是把我的读数放在字节中。
要写入文件,我正在使用类似的打印语句:
with open('file.encr', 'w') as f:
print(decrypt_iv, file=f, end="")
print(salt, file=f, end="")
print(key, file=f, end="")
print(encrypt_iv, file=f, end="")
print(ciphertext, file=f, end="")
我不知道这是否会导致问题,我应该使用write()?
答案 0 :(得分:0)
这个问题是由于我使用print函数将字节打印到文件引起的。
with open('file.enc', 'wb') as f:
f.write(iv)
f.write(salt)
f.write(key)
和
with open("file.enc", "rb") as f:
iv = f.read(16)
salt = f.read(16)
key = f.read(32)
成功转移数据。