Это зависит.
Некоторые части PyCrypto действительно хороши.Например, API для Crypto.Random (представленный в PyCrypto 2.1) был разработан, чтобы быть довольно надежным, а основной алгоритм, который он использует (Fortuna), был также разработан, чтобы быть довольно надежным.
Другие части - просто реализациииз низкоуровневых крипто примитивов, так что это работает, но вы должны знать, что вы делаете, чтобы использовать их правильно.Например, Crypto.PublicKey.RSA не реализует полный стандарт RSA PKCS # 1 (о чем думает большинство людей, говоря о «RSA»).Он реализует только базовый примитив RSA (m ^ e mod n и c ^ d mod n), и вам все равно нужно предоставить собственную реализацию PKCS # 1.
Лучший способ убедиться, что PyCrypto шифрует вашПравильно использовать данные (без чтения исходного кода, что я рекомендую всем) - использовать стандартный протокол и / или формат сообщений и проверить, что ваш код взаимодействует с другими реализациями.Если вы создаете свой собственный формат сообщения (что вам, вероятно, не следует делать в любом случае), то вам нужно быть очень осторожным, чтобы убедиться, что PyCrypto действительно делает все, что вы думаете.
Отказ от ответственности:Я являюсь текущим сопровождающим PyCrypto, поэтому мое мнение не следует рассматривать как независимый отзыв.
Обновление: PyCrypto v2.5 и более поздних версий теперь включает надлежащее шифрование RSA PKCS # 1 и подписьреализации.Подробности смотрите в документации API для Crypto.Cipher.PKCS1_OAEP и Crypto.Signature.PKCS1_PSS.