P、Q、GとYを取得するために、X509 DSS証明書の解析
-
23-09-2019 - |
質問
私は、デジタル署名アルゴリズム(DSA)公開鍵を含むX509証明書を解析しようとしています。
私はP、Q、GおよびYを得ることができましたjavax.security.cert.X509CertificateクラスおよびgetPublicKey()メソッドを使用します:
P: 0279b05d bd36b49a 6c6bfb2d 2e43da26 052ee59d f7b5ff38 f8288907 2f2a5d8e 2acad76e ec8c343e eb96edee 11
Q: 036de1
G: 03
Y: 02790a25 22838207 4fa06715 1def9df5 474b5d84 a28b2b9b 360a7fc9 086fb2c6 9aab148f e8372ab8 66705884 6d
しかし、私は確信してどのような形式これは、それが\ JavaでのBigIntegerます。
ロングに変換するために、それを解析する方法はありませんよん誰ノウハウ、この変換を行うには?
私は現在、それがヘックスであり、私はそうと、それを解析していますと仮定しています - 。しかし、これが正しければ、私は確信して100%ではないんです。
おかげで、 デーブ
解決
あなたははすでには、大きな整数を持っている必要があります。ここではそれが私のために行く方法です。
X509Certificate xc = X509Certificate.getInstance(ecert);
PublicKey pkey = xc.getPublicKey();
DSAPublicKey dk = (DSAPublicKey)pkey;
DSAParams pp = dk.getParams();
System.out.printf("p = 0x%X\n", pp.getP());
System.out.printf("q = 0x%X\n", pp.getQ());
System.out.printf("g = 0x%X\n", pp.getG());
System.out.printf("y = 0x%X\n", dk.getY());
は符号化された証明書を想定するecert
です。インタフェースのDSAPublicKey
とDSAParams
はjava.security.interfaces
にあります。
またKeyFactory
通過し、getKeySpec()
インスタンスと同じ値を提供しますDSAPublicKeySpec
、などの公開鍵をエクスポートするBigInteger
メソッドを使用することができます。けれども、その道路を通過するゲインがある場合、私はわからない。
何が示すことは、おそらくエンコーディングのいくつかの種類ですが、私はどちら知って損失ではかなりいます。とにかく、「Q」パラメータが適切なDSA公開鍵で少なくとも160ビット幅のものでなければならない。
所属していません StackOverflow