質問

暗号化関数(少なくともAESおよびRSA)が必要なPython 3でプログラムを書いています。私は見つけました Pycrypto 2.xバージョンでのみ動作しているようです。

Python 3で利用できる優れたツールはありますか、それともPython 2(またはその他のソリューション)と互換性があるようにプログラムを翻訳し始めますか?

ありがとうございました


アップデート 以下に言及したように、Py3kでPycryptoが利用可能になりました

役に立ちましたか?

解決

Pycrypto 2.4.1以降はPython 3.xで作業します(参照 Changelog Diff).

他のヒント

Python 3自体はプライムタイムの準備ができていますが、それをサポートするライブラリの不足は障害です。あなたができる最善のことは、もちろんPycryptoをPython 3にポートするのを助けることです。ただし、おそらく完全に些細なことではなく、数日間の仕事になるC-Extensionモジュールがたくさんあるからです。たぶん、現在のメンテナーは、ポーティングに興味があるか、すでに途中でそこにいるのかもしれませんが、彼に連絡して尋ねる必要があります。

Pythonに書かれたRSAモジュールがあり、かなりクリーンで簡単にポータブルコードを持っているように見えますが、AESにとっては、Pycryptoが使用するモジュールのようです。そのため、代わりにソフトウェアをPython 2の下で実行する方がおそらく簡単です。

凍結グラフィーライブラリはほとんど数値計算であり、PY3Kバージョンがまだ利用できない理由はわかりません。

  1. ここは Pydes Python 3で利用可能。
  2. ここは AESアルゴリズム Python 3での実装。これから移植されました py2kバージョン
  3. ここは RSAアルゴリズム Python 3での実装。これから移植しました py2kバージョン.

アルゴリズムテキストに従って実装された開発プログラムだけであるため、注意して使用してください。 (つまり、元のPython2バージョンの厳密さがわかりません)。また、それらはすべて純粋なPythonライブラリであり、C-Extensionsを使用して書かれたものよりも遅くなります(そして、それがおそらくPY3Kバージョンが遅れている理由です)。

ラッパーライブラリを書きました 単純なクリプト Python 3で暗号化と復号化を提供し、作業をPycryptoに委任します。

これをPycryptoで使用することの利点は、次のものを含みます。

  • はるかにシンプルなインターフェイス:

    data = encrypt(password, text)
    text = decrypt(password, data).decode('utf8')
    
  • パスフレーズの使用をより安全にするための重要な拡張

  • データの変更をチェックするためのHMACの使用

  • Python 3に移動すると、GoogleのKeyczarに実装を切り替えることができるバージョンヘッダー(それがより適切に維持されるはずなので、明らかな必要性からこれを書いただけです)。

以下を使用してパッケージをインストールできます。

easy_install simple_crypt

で詳細情報を入手できます githubページ プロジェクトのために。

Python用の合理的な暗号ライブラリ(バージョンに関係なく)については知りません。私が知っているすべて(Pycryptoを含む)は単なるおもちゃです。真剣なアプリケーションを実装する場合は、M2Cryptoなどの実際のライブラリのラッパーを探す必要があります。 Pycrypto自体は多くの基準に従います。特に、RSAには安全なパディングスキームが必要です。 Pycryptoは少なくとも現在パディングを使用していないため、RSAの実装はかなり安全であり、他の暗号ライブラリと互換性がありません。

Martinsの質問への回答:明らかに、この質問は多くの意見を受け入れています。 1つの提案は、Pythonの代わりにJavaを使用することです。 Javaには明確に定義された暗号化インターフェイスがあり、インターフェイスを実装するさまざまなプロバイダーがあります。これには、プロバイダーから独立したソリューションを実装できるため、異なるプロバイダーを簡単に切り替えることができるという大きな利点があります。私は個人的にOpenSSLが好きですが、使用するのがかなり難しいことを知っています。

これがPython3です 図書館 暗号化用 リサーチ ジョンズ・ホプキンスから。楕円曲線操作とペアベースの暗号をサポートします。

LibtomCryptを囲む私のPythonラッパーは、Python 3をサポートし、AESとRSAの両方を備えています。

見る: https://github.com/mikeboers/pytomcrypt#readme

Cryptography (documentation)の複数の欠点に対処するという主張 PyCrypto, M2Crypto, 、 と PyOpenSSL. 。彼らは言及していません simple-crypt, しかし、このプロジェクトの主な目標は、高レベルで安全で使いやすいインターフェイスを提供することと、低レベルのインターフェイス(「Hazmat」モジュールから入手可能)のセットを提供することです。 。

他の図書館を使用していないため、暗号化が代替品よりも優れているかどうかについてコメントすることはできませんが、これまでのところ私のニーズを確実に満たしています。

Pycryptoにはpy3kブランチがあります(in https://github.com/dlitz/pycrypto/tree/py3k)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top