私はしばらくこれに苦労しました。これが私のシナリオです。25 文字のソフトウェア プロダクト キー (Microsoft スタイルの FFFFF-EEEEE-DDDDD-BBBBB-77777 など) を生成しようとしています。ノンス (未加工のプロダクト キー) によって正常に生成されました。この記事によると、最終的なプロダクト キー (ベース 24 形式でエンコードする前) は、正確に 15 バイト (ノンスに 4 バイト、デジタル署名に 11 バイト) である必要があります。
問題は、11 バイトの署名をどのように生成するかということです。現在最短の署名暗号化 (ECC - secp128r2 曲線を使用 - これにより、128 ビットの秘密鍵が得られます) を使用してみました。署名後、私の署名のサイズは 80 バイトです (Java ステートメントによって出力されます)。
System.out.println("length: "+signedProductKeyBytes.length);
私の質問は次のとおりです。
EC 鍵のサイズ (ビット単位) と結果の EC 署名の長さ (バイト単位) との関係は正確には何ですか?
たとえば、128 ビットの EC キーは、何バイトの署名サイズを生成することになっていますか?
11 バイトの署名を生成するにはどうすればよいですか (ちなみに、Windows XP の時代には EC キーがなかったと確信しています。そのため、MS は EC を使用していませんでした。より良い方法はありますか? RSA 32 ビット キーを使用するとします。か何か?)?
また、文字列のサイズ (私の場合、署名されている "123456789" などの 9 文字の文字列です) は、署名の最終的な長さに影響しますか?
しばらくこれに苦労し、オンラインであらゆる場所を検索しました-多くの技術的な話で答えます-しかし、私の質問に答えることに固有のものは何もありません(私が得た最も近いものは 、RSAキーのこの記事でした)
迅速な回答が得られることを願っています。私のプロジェクトはすでに数週間遅れています。みんなありがとう!