2

長さ300 ビットのテキストにデジタル署名を生成し、取得した署名に新しいテキストを追加してから、結果のテキストに署名したいと考えています。

Bouncy Castle 関数を使用して、RSA 署名方式では、キーのサイズが入力長よりも大きくなければならないことに気付きました。得られた出力の長さはキーのサイズと等しく、新しいテキストを追加することにより、キーのサイズが大きくなる必要があります。しかし、署名には1 つのキーを使用したいと考えています。たとえば、最初は 512 ビット キーを使用し始めましたが、2 回目の署名では 1024 ビット キーを使用する必要がありますが、署名用のキーは 1 つしかありません。

どうすればいいですか?可能ですか(Javaまたは任意の言語で)?

4

2 に答える 2

1

どうしても鍵だけを使うと1回512-bitで署名できるデータ長が最大になるので、データを分割して個別に署名する必要があります。 たとえば 、2 回目の署名を行う前のデータ長が であると仮定し、それを 2 つのセット に分割します。そして、これら 2 つを別々に署名し、結果を連結します。 編集1つのキー だけを使用して、それを行うことができるもう1つの方法があります-53 bytes=424 bits



500 bits424 bits66 bits



  • の鍵サイズを持っています2048 bits。までの長さのデータに署名できます245 bytes=1960bits
  • 最初の署名操作と追加情報の追加の後、つまり Sign(data)+info の後 、結果に対してSHA-512ダイジェストを実行します。これにより、結果が64 バイトに圧縮されます。
  • 次に、同じキーで再度署名します。

    要するに -Sign(SHA-1(Sign(data)+info))

    注 : 上記の署名は、鍵の長さで1024-bitも行うことができます。
于 2012-11-21T13:06:16.180 に答える
0

サインをいくつかのコードに暗号化し、それらの両方を使用するだけで、別の(仮想サイン)を作成する簡単なアルゴリズムを作成してみませんか。

それはあなたのために2つの目的を解決します。

  • あなたは両方の異なる署名を持っています
  • あなたが持っている唯一無二の鍵が使えるようになります

それがあなたのために働くことを願っています:)

于 2012-11-21T13:04:44.980 に答える