Как я могу использовать bcrypt / scrypt в appengine для Python? - PullRequest
23 голосов
/ 11 августа 2011

Я хочу создать систему аутентификации для моего приложения в соответствии с SUAS , за исключением того, что вместо использования SHA256 для хеширования паролей я бы хотел использовать bcrypt или scrypt.К сожалению, как py-bcrypt, так и scrypt для python используют нативный c, который не поддерживается GAE.

Есть ли способ обойти это?

Ответы [ 2 ]

24 голосов
/ 11 августа 2011

Scrypt и BCrypt оба чрезвычайно интенсивно используют процессор (по замыслу).Из-за этого я очень сомневаюсь, что любая реализация на чистом python будет достаточно быстрой, чтобы быть защищенной, то есть иметь возможность хешировать с использованием достаточного количества раундов в течение разумного промежутка времени.

Я лично могу подтвердить это, я пытался написать BCrypt на чистом питоне, и он был способ слишком медленным, чтобы быть полезным.Документы для реализации pure-python bcrypt, упомянутые в другом ответе, отмечают этот точный недостаток - чтобы остерегаться использовать его для реальной безопасности, его раунды должны быть установлены слишком низкими.Единственное время, когда такие реализации будут достаточно быстрыми, - это pypy, а это не та ситуация, с которой вы сталкиваетесь.2.Таким образом, тяжелый бит вычислений будет по-прежнему записываться на C, даже в GAE.Я бы порекомендовал что-то на основе PBKDF2 или SHA-512-Crypt (примечание: это , а не просто обычный хэш sha512).Безопасность алгоритмов такая же хорошая, но реализации на чистом python будут гораздо более эффективными, поскольку они могут использовать hashlib для выполнения тяжелой работы.

Библиотека Passlib можетбыть полезным в этом случае, он содержит реализации PBKDF2 и SHA-512-Crypt в чистом Python. (Отказ от ответственности: я автор этой библиотеки) .Другая библиотека Python с поддержкой PBKDF2: Cryptacular .

7 голосов
/ 11 августа 2011

Этот парень портировал py-bcrypt на чистый python, чтобы вы могли использовать его на GAE: https://github.com/erlichmen/py-bcrypt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...