Python - 如何避免b“\ n”被写入带有“wb”的文本文件导致换行?

时间:2017-08-27 23:35:49

标签: python

以下是我的案例:

# Small hashing script example
import hashlib
import os

def original_pass(Password):
    salt = os.urandom(64)
    hashed = hashlib.pbkdf2_hmac("sha512", Password.encode(), salt, 300000, dklen = 124)
    with open("Hash.txt", "wb") as file:
        file.write(salt + b"\n" + hashed)
        file.close()

def check_pass(New_Pass):
    with open("Hash.txt", "rb") as file:
            f = file.readlines()
            print (f)
            check_hash = hashlib.pbkdf2_hmac("sha512", New_Pass.encode(), f[0].strip(b"\n"), 300000, dklen = 124)   
            file.close()     
    if check_hash == f[1]:
        return True
    else:
        return False

original_pass("Password")
print (check_pass("Password"))

我的问题是,哈希偶尔会包含\ n等字符。例如。 B “X004 \ N4 \ NO5”。该行分为b“x004 \ n”,b“4 \ no5”。当我尝试读取盐之类的东西时,这会导致错误,因为它可能被分成多个部分。有没有办法避免它被这样阅读,或者只是阻止它以这种方式编写?

解决重复的评论

我在这里专门处理字节字符串而不是常规字符串。两者都是一种独特的数据类型,更多的是python 3(我正在使用的版本),如下所示:What is the difference between a string and a byte string?。这种区别意味着某些字符串方法(如.encode())不适用于字节字符串。因此,我正在处理的数据类型以及它们如何被操纵等有明显的区别......

1 个答案:

答案 0 :(得分:0)

基于@Blckknght评论,使用固定长度盐知识的代码:

else