1

と を使用crypto.signText()CAPICOMてテキストに署名しています。

だから、今私は Base64Encoded 署名付きテキストを持っています。

次に、BouncyCastle を使用して署名を検証しています。ここまでは大丈夫です。

今、私がやりたいことは、

ユーザーが初めてシステムにログインするときに、その署名を確認してから publicKey をデータベースに保存します。そして、次のログインから、データベースに保存された publicKey をそのユーザーに対して、新しく取得した署名付きテキストと照合したいと考えています。

署名されたテキストの公開鍵とデータベースに保存されている公開鍵が同じ場合、ユーザーのみがシステムにログインできます。

これを実装する方法は?(私はJAVA言語を使用しています)

4

1 に答える 1

0

最初の署名は、公開鍵ではなく秘密鍵を使用して作成されます。その後、公開鍵を使用して署名を検証できます。これは、データベースからの公開鍵を使用して、「署名されたテキスト」の署名を検証するためにできることです。Java では、通常、Bouncycastle はもう必要ありません。ランタイムには、必要なものがすべて含まれています。

署名を検証する方法の例: http://download.oracle.com/javase/tutorial/security/apisign/vstep4.html

リプレイ攻撃を回避するために、「署名付きテキスト」にはシステムの時刻と日付、または単調なカウンターを含める必要があります。したがって、テキストの内容が最新のものであることも確認する必要があります。

于 2011-01-05T12:47:24.477 に答える