Python bcrypt同一字符串的不同哈希?
我在mysql中创建了具有相同密码的用户,然后此代码段使用bcrypt将纯文本密码更改为哈希。为什么同一字符串的哈希值不同Python bcrypt同一字符串的不同哈希?,python,hash,bcrypt,password-hash,Python,Hash,Bcrypt,Password Hash,我在mysql中创建了具有相同密码的用户,然后此代码段使用bcrypt将纯文本密码更改为哈希。为什么同一字符串的哈希值不同 import mysql.connector import bcrypt mydb = mysql.connector.connect( host="localhost", user="root", password="........", database="brian
import mysql.connector
import bcrypt
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="........",
database="briandb",
)
mycursor = mydb.cursor()
for user in ["bob", "alice"]:
password = "ttt"
print(password)
hashed = bcrypt.hashpw(password.encode("utf-8"), bcrypt.gensalt())
print(hashed)
mycursor.execute(
f'UPDATE users set password = "{hashed}" where user = "{user}"'
)
mydb.commit()
您已经发现了健壮的密码散列的一个关键特性:每次对密码进行散列,都会得到不同的结果。为什么? 每次使用不同的随机盐(来自
bcrypt.gensalt()
)
为什么这很重要
如果一个网络窃贼闯入你的系统并偷走你的
用户表,他们会得到你的加密密码。当哈希正确完成时,很难恢复未加盐的密码。接下来,如果他们闯入银行系统并窃取他们的散列密码,我们不希望他们能够得出结论,即某些用户在两个系统上拥有相同的密码。如果他们能猜到这一点,他们就会知道针对哪些用户进行更深层次的网络犯罪。您已经发现了健壮的密码散列的一个关键特性:每次对密码进行散列,都会得到不同的结果。为什么?
每次使用不同的随机盐(来自bcrypt.gensalt()
)
为什么这很重要
如果一个网络窃贼闯入你的系统并偷走你的用户表,他们会得到你的加密密码。当哈希正确完成时,很难恢复未加盐的密码。接下来,如果他们闯入银行系统并窃取他们的散列密码,我们不希望他们能够得出结论,即某些用户在两个系统上拥有相同的密码。如果他们能猜到这一点,他们就会知道针对哪些用户进行更深层次的网络犯罪。因为你每次都在创造新的机会。因为你每次都在创造新的机会。