#python
От совсем "залётных" пользователей использовал base64, чтобы пароли не были доступны невооруженному глазу: password=base64.b64decode(postgres["password"]) Но считаю это костылём. Подскажите, как храните пароли вы. Up1 Пример python-функция в postgresql - где идёт забор данных из БД с подключением и вводом пользователя и пароля. Как скрыть, "захэшить" пароль и т.п. CREATE OR REPLACE FUNCTION myfucn1(w text) RETURNS SETOF login AS $BODY$ from pymssql import connect as conn q = tuple() db = conn(host='00.0.00.00', database='core', user='sde', password='12345', charset='UTF-8') query = db.cursor() query.execute(u"""query1""") ss = query.fetchall() for field1, field2 in ss: q += ([field1, field2],) return q $BODY$ LANGUAGE plpythonu Up2. Я понял, что хэширование используют при авторизациях и т.п., но как это применить в моём примере?
Ответы
Ответ 1
Для хеширования строк предназначен модуль hashlib. Прежде чем использовать функции из этого модуля, необходимо подключить модуль с помощью инструкции: import hashlib Модуль предоставляет следующие функции: md5(), sha1(), sha224(), sha256(), sha384 и sha512(). В качестве необязательного параметра функциям можно передать шифруемую последовательность байтов. Например: import hashlib h = hashlib.sha1(b"password") Передать последовательность байтов можно также с помощью метода update(). В этом случае объект присоединяется к предыдущему значению: h = hashlib.sha1() h.update(b"password") Получить зашифрованную последовательность байтов и строку позволяют два метода — digest() и hexdigest(): h = hashlib.sha1(b"password") h.digest() b'[\xaaa\xe4\xc9\xb9??\x06\x82%\x0b1\xf83\x1b~\xe6\x8f\xd9' h.hexdigest() '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8' Для сравнения введенного пользователем пароля с сохраненным в базе необходимо получить хеш введенного пароля, а затем произвести сравнение. import hashlib h = hashlib.md5(b"password") p = h.hexdigest() p # Пароль, сохраненный в базе '5f4dcc3b5aa765d61d8327deb882cf99' h2 = hashlib.md5(b"password") # Пароль, введенный пользователем if p == h2.hexdigest(): print("Пароль правильный") Программа выведет что пароль правильный. Также можно использовать: hashlib - MD5, SHA-1,SHA224, SHA256, SHA384, SHA512 pycrypto - Python Cryptography Toolkit Вдобавок к PyCrypto - KeyCzar, это чтобы было проще работать. RSA вот пример А также поиск по категориям: http://pypi.python.org/pypi?:action=browse&c=401&c=400
Комментариев нет:
Отправить комментарий