0

PythonM2Cryptoパッケージを使用してRSAキーを生成しています。

>>> import M2Crypto
>>> rsa = M2Crypto.RSA.gen_key (2048, 65537)
.............................................................+++
............................+++
>>>

「opensslのもの」に注意してください。stdout / errへの書き込みを抑制するために、私は通常次のことを行います。

sys.stdout = open(os.devnull, 'w')
sys.stderr = open(os.devnull, 'w')

この場合、それは効果がありません。これは、M2CryptoがOpenSSLをラップする方法に関係していると思います。

それを止める方法はありますか?

4

1 に答える 1

3

私はソース/M2Crypto/RSA.pyを見て、あなたの問題が何であるかを見つけました、そしてそれから私がちょうどドキュメントを読むことができたかもしれないことに気づきました。常に最初にドキュメントを確認してください!!!

RSA.gen_keyのドキュメントによると、呼び出されるたびに呼び出す関数を指定できるようにする、gen_key呼び出されるオプションの引数があります(表面上はユーザーにフィードバックを提供するため)。このコールバックのデフォルト値は、ものをに出力します。関数呼び出しを次のように変更します。callbackgen_keystdout

>>> rsa = M2Crypto.RSA.gen_key (2048, 65537, callback=lambda x, y, z:None) 

そして、それはトリックを行う必要があります。

編集

以下は、M2PyCryptoソースからの関連コードです。コメントを追加しました。

def keygen_callback(p, n, out=sys.stdout): #sys.stdout is bound to `out` at definition time
    """
    Default callback for gen_key().
    """
    ch = ['.','+','*','\n']
    out.write(ch[p])
    out.flush()


def gen_key(bits, e, callback=keygen_callback): #keygen_callback is bound to `callback`
    #other code...
于 2012-08-01T20:42:10.407 に答える