は、私の場合です:Python - 改行を引き起こす "wb"のテキストファイルに "b n"を書くのを避けるにはどうしたらいいですか?ここ
# 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(私が使用しているバージョン)のmoresoはWhat is the difference between a string and a byte string?です。この区別は、.encode()などの特定の文字列メソッドがバイト文字列で機能しないことを意味します。このように、固定長塩の知識を使用してそこに私はなど、扱うとそれらがどのように操作されていたデータの種類に明確な違いが...ある@Blckknghtコメントに基づいて
なぜとにかく、改行で分割していますか? – user2357112
例えば、 'b '\ n" 'byte - base64を使わない表現でハッシュをエンコードすることができます。あるいは、改行を使って各ハッシュが終了する場所を決めることができます。 – user2357112
[生の文字列をキャストするpython](https://stackoverflow.com/questions/2428117/casting-raw-strings-python)の可能な複製 –