Another security question

Frank Millman frank at chagford.com
Fri Dec 23 05:19:00 EST 2016


Hi all
This is a follow-up to my recent 'security question' post.
I am starting a new thread, for 2 reasons -
1) I sent a link to the previous thread to my ISP for their information. It 
is up to them whether they do anything with it, but I wanted to keep that 
thread focused on the original issue raised.
2) This one is more on-topic, as it is to do with my python project.
Having read the previous thread and various links, I want to review the way 
I handle passwords in my accounting application.
At present I just store a SHA-1 hash of the password for each user. Here are 
my thoughts on improving this.
1. Generate a 'salt' for each password. There seem to be two ways in the 
standard library to do this -
 import os
 salt = os.urandom(16)
 import secrets
 salt = secrets.token_bytes(16)
 My guess is that it will not make much difference which I use.
2. Store the salt in the database along with the user-id and hashed password 
for each user.
3. Generate the password from the string supplied by the user as follows -
 from hashlib import blake2b
 password = blake2b('my_password'.encode('utf-8'), salt=salt).digest()
The hashlib docs have the following warning -
"Salted hashing (or just hashing) with BLAKE2 or any other general-purpose 
cryptographic hash function, such as SHA-256, is not suitable for hashing 
passwords. See BLAKE2 FAQ for more information."
I propose to ignore this warning. I feel that, for my purposes, the above 
procedure is adequate.
Does all this sound reasonable?
Any comments appreciated.
Frank Millman


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /