Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 26, 2020 12:36:57

ffrr
Зарегистрирован: 2020-10-22
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

сравнение введенного пароля с паролем из MariaDB

В MariaDB пароль хранится в SHA1. Как теперь можно сравнить значение ввденного пароля с паролем из БД?

Часть скрипта:

 username = 'john'
 
name_id_dct = {
    'john': 659605758501,
    'mary': 659605758502,
}
 
userid = name_id_dct[username]
 
cursor.execute("SELECT userID, password from db")
data = cursor.fetchone()
dbuserid, dbpass = data
if userid == dbuserid and password == dbpass:
    print('Ok')
else:
    print('Fail')

Офлайн

#2 Окт. 26, 2020 13:03:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

сравнение введенного пароля с паролем из MariaDB

ffrr
В MariaDB пароль хранится в SHA1
Конвертнуть введенный пароль в SHA1 и сравнить их???



Офлайн

#3 Окт. 26, 2020 13:09:41

ffrr
Зарегистрирован: 2020-10-22
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

сравнение введенного пароля с паролем из MariaDB

да, а с помощью какой функции это возможно?

Офлайн

#4 Окт. 26, 2020 13:22:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

сравнение введенного пароля с паролем из MariaDB

Really???

Let me google



Офлайн

#5 Окт. 28, 2020 12:41:01

ffrr
Зарегистрирован: 2020-10-22
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

сравнение введенного пароля с паролем из MariaDB

При запуске скрипта

  #!/usr/bin/python
import pymysql
import getpass
import uuid
 
print("-------------------------")
print("<<<<<<<<<Welcome>>>>>>>>>")
print("-------------------------")
username = input("Username:")
db = pymysql.connect("hostname","user","pass","db")
                                               
# prepare a cursor object using cursor() method
cursor = db.cursor()                                      
                                                          
cursor.execute("SELECT userID, password from permissions")
data = cursor.fetchone()
dbuser, dbpass = str(data[0]), data[1]
print(data)
print(dbuser)
print(dbpass)
if username == dbuser :
        password = getpass.getpass(prompt="Enter secret password:")
else :
    print ("please try another user name. This user name is incorrect")
def hash_password(password):
    salt = uuid.uuid4().hex
    return hashlib.sha1(salt.encode() + password.encode()).hexdigest() + ':' + salt
    
def check_password(hashed_password, user_password):
    password, salt = hashed_password.split(':')
    return password == hashlib.sha1(salt.encode() + user_password.encode()).hexdigest()
new_pass = input('Enter password: ') 
hashed_password = hash_password(new_pass) 
print('String for saving in database: ' + hashed_password) 
old_pass = input('Enter password again for check: ') 
if check_password(hashed_password, dbpass):
    print('Your password is correct')
else:
    print('Sorry, password don\'t match')

даже если я ввожу верный пароль дважды, пишет, что пароль не совпадает:
 -------------------------
<<<<<<<<<Welcome>>>>>>>>>
-------------------------
Username:659605758501
(659605758501, 'd399dc6259ca2df564e0b939abc334ffd77e41d8')
659605758501
d399dc6259ca2df564e0b939abc334ffd77e41d8
Enter secret password:
Enter password: my_password
String for saving in database: 9e691d981f2c5d240e27ba5d499b695693da6b8f:ab8ae339f01d43a7b8f9dda6ddda545a
Enter password again for check: my_password
Sorry, password don't match

здесь я ввожу my_password как просто пароль (не SHA1).
А если я введу SHA1 от пароля, как записано в БД, то пишет, что пароль совпадает:
 -------------------------
<<<<<<<<<Welcome>>>>>>>>>
-------------------------
Username:659605758501
(659605758501, 'd399dc6259ca2df564e0b939abc334ffd77e41d8')
659605758501
d399dc6259ca2df564e0b939abc334ffd77e41d8
Enter secret password:
Enter password: d399dc6259ca2df564e0b939abc334ffd77e41d8
String for saving in database: 7f9879cbf1eae806be740254ec4d317ec068186f:da179b81f6cc4cfab5693ead0227583f
Enter password again for check: d399dc6259ca2df564e0b939abc334ffd77e41d8
Your password is correct

Как правильно сравнивать SHA1 от пароля, который записан в БД с вводимым паролем?

Отредактировано ffrr (Окт. 28, 2020 12:45:32)

Офлайн

#6 Ноя. 6, 2020 13:19:39

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

сравнение введенного пароля с паролем из MariaDB

salt = uuid.uuid4().hex
каждый раз разный



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version