以下是我的案例:
# 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())不适用于字节字符串。因此,我正在处理的数据类型以及它们如何被操纵等有明显的区别......
答案 0 :(得分:0)
基于@Blckknght评论,使用固定长度盐知识的代码:
else