12

X509 証明書からデータを取得する必要があります。

Windows で証明書ファイルを開くと、シリアル番号がこの形式で表示されます。

ex. 39 65 70 eb d8 9f 28 20 4e c2 a0 6b 98 48 31 0d 

Javaを使用して取得しようとしているのと同じデータ。ロードした後、使用します

x509.getSerialNumber();
and result is : 76292708057987193002565060032465481997

では、これらの両方の違いは何ですか? 結果を上に上げたい。

4

2 に答える 2

25

Windows はシリアル番号の 16 進表現を表示しますが、Java はBigIntegerから結果を返しますX509Certificate.getSerialNumber()

BigIntegerを16 進値として表示するには、単に を呼び出しますtoString(16)

BigInteger bi = new BigInteger("76292708057987193002565060032465481997");
System.out.println(bi.toString(16));

出力します:

396570ebd89f28204ec2a06b9848310d
于 2012-09-25T12:39:24.327 に答える
2

1つ目は、証明書の16進値です。もう1つは10進数です。

これは、最初の証明書のバイト配列をどのように変換して印刷するかによって異なります。

これがあなたの証明書だとしましょう:

byte[] cert = { (byte) 0xFD, (byte) 0xB1, (byte) 0xDD, ..., (byte) 0x00 };
BigInteger certVal = new BigInteger(cert);  
System.out.println("And result is  (hex): " + certVal.toString(16));
于 2012-09-25T12:34:47.460 に答える