Я использую gevent greenlet, поэтому я очень ограничен всем, что связано с вычислением процессора. И мне нужно использовать сильный метод хэширования для хранения паролей.gevent и сильный метод пароля хеширования
Когда я не в GEvent контексте, я имею привычку использовать Bcrypt, но я сделал этот небольшой тест:
import bcrypt
import time
password = b"toto"
start_hash = time.clock()
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print 'time hash bcrypt %s' % (time.clock() - start_hash)
start_compare = time.clock()
assert bcrypt.hashpw(password, hashed) == hashed
elapsed = (time.clock() - start_compare)
print 'time check bcrypt %s' % elapsed
что приводит:
time hash bcrypt 0.291887
time check bcrypt 0.293343
Это займет путь слишком много времени, которое будет использоваться как в зеленой одежде.
Как comparaison, тот же тип вычислений с использованием старого md5 хэш:
time hash md5 4.1e-05
time check hash md5 1.1e-05
Какое решение у меня есть?
bcrypt должен быть медленным, потому что хэши паролей должны быть медленными для расчета, чтобы предотвратить взлом – Daniel
@ Даниэль: Я это понимаю. Мой вопрос больше о том, как я могу использовать этот вид хэширования в контексте gevent? – jobou