将字节字符串转换为“普通”字符串Python

问题描述 投票:0回答:1

我正在生成一个argon2d哈希,并希望将其与数据库中的哈希字符串进行比较。

对于散列,我使用此功能:

    import argon2

    argon2Hasher = argon2.hash_password_raw(b"password", b"TESTTESTTESTTEST" ,time_cost=16, memory_cost=512, parallelism=1, hash_len=16,     type=argon2.Type.D) #argon2.low_level.Type.D)
    print(argon2Hasher)

我的输出是:

b'\x0c\xd1\xe3\xf0\x0f\x03<\xa0\xa99\xee\x85I\xc8\xcb\xb0'

我尝试使用argon2Hasher.decode(encoding="ascii")导致:UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 1: ordinal not in range(128)而且我也用encoding="utf-8"尝试了相同的命令,但这导致UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 1: invalid continuation byte

如何将其转换为纯文本(普通字符串)?

我正在使用Python 3.6。

json python-3.x bytestring argon2-ffi
1个回答
0
投票

虽然无法告诉确定使用哪种编码,但有些编码没有无效值,例如latin1,尝试对您的数据产生以下结果:

s = b'\x0c\xd1\xe3\xf0\x0f\x03<\xa0\xa99\xee\x85I\xc8\xcb\xb0'
repr(s.decode('latin1'))
# "'\\x0cÑãð\\x0f\\x03<\\xa0©9î\\x85IÈË°'"

codecs包的文档为您提供了可以指定用于编码的内容的完整列表。

© www.soinside.com 2019 - 2024. All rights reserved.