JKJS
RSA_print_fp(stdout,rsa,1);
この関数は、係数に 0x00 を追加します。そのため、公開鍵のサイズは 128 バイトではなく 129 バイトになります。なぜ 0x00 が追加されるのですか?
ありがとうございました。
これは、モジュラスのASN.1DERエンコーディングです。整数は、2の補数形式、ビッグエンディアンの順序、および最小バイト数で表されます。
その規則により、FF
は-1(10進数)であり、00 FF
255(10進数)です。
RSAでは、すべての整数が正です。したがって、左端のバイトのMSBビットが設定されることはありません。
モジュラスは整数であり、バイトの文字列ではありません。整数は、負と正の両方にすることができます。RSAのモジュラスには負の整数は使用されませんが、整数を処理する関数はOpenSSLでは一般的です。
負の数の最上位ビットは1に設定されます。負の整数と、最上位バイトのビット7が1に設定されている正の整数を区別するために、正の整数の前に0x00が付けられます。