AI-like chatbotを作成しようとしていますが、その機能の1つがログインです。以前はログインコードを使用していましたが、うまくいきましたが、パスワードのハッシュを処理するコードで問題が発生しました。ここでは、コードです:なぜPythonでハッシュする前にエンコードを宣言する必要がありますか?どのようにすればいいですか?
import hashlib
...
register = input ("Are you a new user? (y/n) >")
password_file = 'passwords.txt'
if register.lower() == "y":
newusername = input ("What do you want your username to be? >")
newpassword = input ("What do you want your password to be? >")
newpassword = hashlib.sha224(newpassword).hexdigest()
file = open(password_file, "a")
file.write("%s,%s\n" % (newusername, newpassword))
file.close()
elif register.lower() == ("n"):
username = input ("What is your username? >")
password = input ("What is your password? >")
password = hashlib.sha224(password).hexdigest()
print ("Loading...")
with open(password_file) as f:
for line in f:
real_username, real_password = line.strip('\n').split(',')
if username == real_username and password == real_password:
success = True
print ("Login successful!")
#Put stuff here! KKC
if not success:
print("Incorrect login details.")
そして、ここで私が得ていた結果だ:私は私が(ラテン1)を使用してされるべきだと思うのエンコーディングを見て、必要な構文を発見した
Traceback (most recent call last):
File "<FOLDERSYSTEM>/main.py", line 36, in <module>
newpassword = hashlib.sha224(newpassword).hexdigest()
TypeError: Unicode-objects must be encoded before hashing
、と私はまだ同じ結果を受け取ることを追加しました。
ありがとうございますが、「ハッシュの唯一のユーザー」とはどういう意味ですか?これはGitHubプロジェクトなので、それでも動作しますか?また、私はこれを試して、登録は正常ですが、ログインしようとすると 'Traceback(直近の最後のコール): ファイル"/home/pi/Desktop/KittyKatCoder-edison-ai-3ae75b2/ real_username、real_password = line.strip( '\ n')。split( '、') ValueError:解凍するには1以上の値が必要です。 – KittyKatCoder
@KittyKatCoder:あなたが共有していると言っていますこれらのパスワードは別のシステムとハッシュします。そのシステムでUTF-16を使用してUnicodeテキストをバイトにエンコードする場合、そのエンコーディングと一致する必要があります。私はほとんどのシステムがUTF-8を使うことを賭けるだろう。 –
よろしくお願いいたします。エラーについて私は何ができますか? – KittyKatCoder