2016-09-23 22 views
0

私は次のように公開鍵を使ってデジタル署名を確認するためにRSA libraryを使用しています:PythonでRSAライブラリを使用して署名の実際の値を表示する方法は?

rsa.verify(message, sig, key) 

が期待通りに機能が働き、正しくない場合のためのライブラリをプリントアウト

rsa.pkcs1.VerificationError: Verification failed 

私が欲しいです実際の計算値を見て、それを期待値と比較することができます。図書館の内部を調整せずに印刷する方法はありますか?テンプレートとしてverify()方法使用

+0

['verify()'](https://github.com/sybrenstuvel/python-rsa/blob/version-3.4.2/rsa/pkcs1.py#L286)メソッドは複雑ではありません。必要な方法で単純にコピーして変更することができます。 – mata

+0

私はライブラリを変更したくないと思っていますが、これは他のユーザーが自分の変更したバージョンのライブラリを使用する必要があるためです。 – Abundance

+0

おそらく、自分のverify()に基づいて自分の関数を作ることができます。 – Abundance

答えて

1

from rsa import common, core, transform 

keylength = common.byte_size(base) 
decrypted = core.decrypt_int(sig, exp, base) 
clearsig = transform.int2bytes(decrypted, keylength) 

これはあなたの署名がsigとして与えられていることを想定しているが、公開鍵のモジュラスおよびEXPはそれぞれbaseexpです。

最後に注意しなければならないことは、ハッシュに最初に埋め込みが含まれる可能性があることです。私がSHA-256を使用したので、私はclearsigの最後の32バイトを見なければなりませんでした。

+0

うん、あなたは正しいよ – Abundance

+0

あなたはパディング部分を削除したようです。適切なパディングは、RSAシグネチャのセキュリティにとって非常に重要です。これを行うことで、実際にはRSA署名を完全に破壊した可能性があります。しかし、私は絶対に確信していません。 –

関連する問題