类型错误:需要一个类似字节的对象,而不是'str' 'xxx';'xxx'

2024-04-25 05:07:34 发布

您现在位置:Python中文网/ 问答频道 /正文

因为我试图在二进制文件中打印一行新行。 我有这个错误。 错误:

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'

钥匙_创建者.py在

^{pr2}$

请帮我这个忙。 提前谢谢。在


Tags: 文件keyinpy错误createline二进制
1条回答
网友
1楼 · 发布于 2024-04-25 05:07:34

您的问题是,您试图输入一个需要字节的字符串。使用.encode()。以下是对我有用的,如果你还有其他问题,请告诉我:

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.encode())
    f1.close()


create_key('sairam')

相关问题 更多 >