0

みんな私は基本的なライセンスシステムを実装しなければならないプロジェクト(サーバー側のc#snジェネレーター)を与えられました(実際のプロジェクトというよりもテストです)が、要件があります:

  1. RSA 2048 を使用する必要があります
  2. 3 つのダッシュで区切られた、人間にわかりやすい 16 文字 (0 ~ F) (合計 19 記号) を生成する必要があります。

また、クライアント部分は次のようにシリアル番号を確認しています。

VerifyMyKey(p1, p2, p3);

どこ:

  • p1 は、xml でエンコードされた public/exponent 値です。
  • p2 はハッシュされた一意のユーザー ID です (私の場合、プロジェクトは sha1 を使用しています)
  • bp3 はきれいなシリアル番号です

次のような数値を生成する SignData の例はありますか。

1111-1111-1111-1111

またはそのようなものです。私が今得ているのは、機能しているbase64でエンコードされた文字列だけですが、人間に優しいものではありません。

誰にもアイデアはありますか?

4

1 に答える 1

2

署名の長さは正確に 16 バイトでなければならないということですか? これは 2048 ビット RSA では不可能です。定義上、1 つの暗号文ブロック (デジタル署名を含む) の長さは鍵のサイズと同じで、2048 ビット = 256 バイトです。RSA はブロックで動作しますが、ストリーム暗号ではありません。それ以下のものは、正しく復号化/検証されません。

出力を任意の長さにしたいが、16 桁の 16 進数で構成する場合、それは別の問題です。RSA はデータをバイト配列として出力します。1 バイトあたり 2 桁の 16 進数で自由に表現してください。2048 ビットのバイナリ データ ブロックは、512 桁の 16 進数になります。

于 2012-04-16T16:10:00.383 に答える