【发布时间】:2020-04-18 08:54:58
【问题描述】:
当我试图在二进制文件中打印一个新行时。 我得到了这个错误。 错误:
Traceback (most recent call last):
File "F:/PyCharm Python Works/OpenCity/cryptograph/key_creator.py", line 25, in <module>
create_key('sairam')
File "F:/PyCharm Python Works/OpenCity/cryptograph/key_creator.py", line 21, in create_key
f1.write(os.linesep)
TypeError: a bytes-like object is required, not 'str'
key_creator.py
def create_key(x):
import base64
import os
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
password_provided = str(x)
password = password_provided.encode()
salt = b'\xfb|\xe8\xe0\xe5\x9d\x11\xf5\xbc 8o\xbe<\xd9\x92'
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(password))
f1 = open('keys.key', 'ab')
f1.write(key)
f1.write(os.linesep)
f1.close()
create_key('sairam')
请帮助我。 提前致谢。
【问题讨论】:
-
为什么要在文件末尾写入行分隔符?那是您的错误-文件以二进制模式打开,但行分隔符 char 是字符串
-
@lain Shelvington 我每次创建密钥时都需要打印一个新行,所以
标签: python python-3.x binary operating-system