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 .