web-dev-qa-db-ja.com

AES 256暗号化に使用する(純粋な)Pythonライブラリは何ですか?

AES 256の暗号化と復号化を行うための(できれば純粋な)pythonライブラリを探しています。

このライブラリは、CBC暗号モードをサポートし、PKCS7パディングを使用する必要があります 私の以前の質問への回答によると

ライブラリは、少なくともMac OS X(10.4)およびWindowsXPで動作するはずです。理想的には、プロジェクトのソースディレクトリにドロップするだけです。私は これはJosh Davisによる を見たことがありますが、それがどれほど優れているか、そしてそれが必要なCBC暗号モードを実行するかどうかはわかりません...ソースをスキャンすると、そうではないことがわかります

30
Daren Thomas

PyCrypto はあなたのためのものでなければなりません。

18

https://github.com/caller9/pythonaes

これは純粋なpython PKCS7パディング付きです。CBC、CFB、およびOFBモードをサポートします。

問題は、pythonは、この種のことでは超高速ではないということです。serprexのフォークからのコードは少し不可解ですが、あらゆる種類のトリックを使用してすべてを絞るため、私のコードよりもはるかに高速です。 Pythonの最後のスピード。

しかし実際には、これに最適なライブラリがコンパイルされ、SSE/MMXのものにフックされます。

また、IntelはCore(tm)チップライン以来、AES命令を取り入れています。

真の純粋なPythonバージョンを入手して、任意のアーキテクチャ、クロスプラットフォーム、3.xおよび2.7で実行できるようにバージョンを作成しました。

13
caller9

同じものを検索したときにこの質問を見つけたので、リストに別の質問を追加したいと思います。

SlowAEShttp://code.google.com/p/slowaes/
これは、他の人の助けを借りて、JoshDavisのコードを開発したものです。うまくいくようです。

5
Blixt

ncrypt はどうですか?純粋ではありませんpythonですが、結果としてはるかに高速です。基本的にはOpenSSLのNice pythonラッパーなので、背後に高品質のコードがあることがわかります。 。

4
Dan Lenski

PyCryptoは明らかにPythonicではないため、一部のプラットフォーム(AIX、HP-UXなど)でのコンパイルで問題が発生する可能性があります。

2
Denis Barmenkov