1

X509.v3証明書(X509Certificate2オブジェクトとして持っている)のシリアル番号を取得して、XADES XMLDSIGのX509SerialNumber要素に入れようとしていますが、これは整数であるはずです。私が使用している証明書そのものを使用して、他のソフトウェアによって作成された XML 署名があります。そのシリアル番号は次のとおりです。

<X509SerialNumber xmlns="http://www.w3.org/2000/09/xmldsig#">1315010063538360283821765366094690</X509SerialNumber>

残念ながら、前述の XML の署名に使用されたまさにその証明書で初期化された X509Certificate2 オブジェクトからこの値を取得できません。これらは私が得ている価値です

X509Certificate2->SerialNumber = "40D5C2ADDEFD92740000000B9B62"
X509Certificate2->GetSerialNumber() = "40D5C2ADDEFD92740000000B9B62"
Convert::ToBase64String(X509Certificate2->GetSerialNumber()) = "YpsLAAAAdJL93q3C1UA="

GetSerialNumber()がBase64Stringを返すと思います。ご覧のとおり、GetSerialNumber()GetSerialNumber()は異なる値を返します。これらの値から値「1315010063538360283821765366094690」の整数を取得する方法は何ですか?

4

2 に答える 2

3

このようなものが動作するはずです:

var serialHexString = "40D5C2ADDEFD92740000000B9B62";
var serial = BigInteger.Parse(serialHexString, NumberStyles.HexNumber);
于 2015-03-16T12:41:11.080 に答える
0

オブジェクトのシリアル番号は、XML のシリアル番号とまったく同じですが、16 進数表記です。したがって、本当の問題は、「大きな 16 進数文字列が与えられた場合、その 10 進数表現を取得する方法は?」ということです。NET 4+ をターゲットにしている場合は、BigInteger を使用できます。

于 2015-03-16T12:37:34.147 に答える