In our project we need to calculate the public key of a certificate and sha1 hash of public key. I tried to do this using java API "X509Certificate.getPublicKey()" and then calculated the hexadecimal representation of it. But the value obtained through this process does not match with the value that windows shows for "Public Key" when certificate is opened by double clicking it.
により算出した公開鍵と一致JAVAにおける証明書の公開鍵を計算する方法を、私は(PEM形式)証明書を、以下の公開鍵を計算例としてWindows
-----BEGIN CERTIFICATE-----
MIICxDCCAi2gAwIBAgIBBjANBgkqhkiG9w0BAQQFADCBujELMAkGA1UEBhMCSU4x
EDAOBgNVBAgMB0hhcnlhbmExEDAOBgNVBAcMB0d1cmdhb24xDzANBgNVBAoMBk1j
QWZlZTEbMBkGA1UECwwSQXBwbGljYXRpb25Db250cm9sMTIwMAYDVQQDDClNY0Fm
ZWVBcHBsaWNhdGlvbkNvbnRyb2xUZXN0Q2VydEF1dGhvcml0eTElMCMGCSqGSIb3
DQEJARYWYXBwX2NvbnRyb2xAbWNhZmVlLmNvbTAeFw0xMjAzMTMxMDM4MDZaFw0x
MzA3MjYxMDM4MDZaMIGUMQswCQYDVQQGEwJJTjEQMA4GA1UECBMHSGFyeWFuYTEQ
MA4GA1UEBxMHR3VyZ2FvbjEUMBIGA1UEChMLdGVzdENvbXBhbnkxEDAOBgNVBAsT
B3Rlc3RPcmcxETAPBgNVBAMTCHRlc3ROYW1lMSYwJAYJKoZIhvcNAQkBFhd0ZXN0
TmFtZUB0ZXN0RG9tYWluLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
qjRldfjFgIqMrXiNcKYA31bX+nLsw3Q0CeBiWq3oDh3sz/gk7dz+9yLRub+gnosU
Sgj0td5yolhmCKPq9YZe5q/YLm9vsbU6WJr4VU3Uwi4uHTPZxojjUjx9esqTS1uh
AQJhT1BxOLJ+HNb/VqwZ66SB7mPhK2BTT7Kym5zCApsCAwEAATANBgkqhkiG9w0B
AQQFAAOBgQB7yiAwtYiB05lJf+kUCgOmfUx/18ZJPB1Am+fIr+aMo2Djgv7bLPG5
vesq0t1opBJIS9LqswW8Bf3IGdhc+33+LYRVxUB8mLHZ2KyCqfuuT7PdHHsiyNDg
uMdO+equDFUsTMv0y6KyzCf89ZPjGhS4O09zVyR/KtZzSE6dyvyBNg==
-----END CERTIFICATE-----
JavaのAPIにより算出した公開鍵の16進表現は 30819f300d06092a864886f70d010101050003818d0030818902818100aa346575f8c5808a8cad788d70a600df56d7fa72ecc3743409e0625aade80e1deccff824eddcfef722d1b9bfa09e8b144a08f4b5de72a2586608a3eaf5865ee6afd82e6f6fb1b53a589af8554dd4c22e2e1d33d9c688e3523c7d7aca934b5ba10102614f507138b27e1cd6ff56ac19eba481ee63e12b60534fb2b29b9cc2029b0203です一方、公開鍵の16進表現に
010001(私たちは詳細タブの公開キーの値が存在する証明書をダブルクリックしたときに)だから、30818902818100aa346575f8c5808a8cad788d70a600df56d7fa72ecc3743409e0625aade80e1deccff824eddcfef722d1b9bfa09e8b144a08f4b5de72a2586608a3eaf5865ee6afd82e6f6fb1b53a589af8554dd4c22e2e1d33d9c688e3523c7d7aca934b5ba10102614f507138b27e1cd6ff56ac19eba481ee63e12b60534fb2b29b9cc2029b0203010001
に従っているウィンドウで示したように、公開鍵Java APIとウィンドウによって計算されたものは異なっています。私が見てきたことは、ウィンドウで公開された公開鍵は、java APIの公開鍵で45番目の文字からの値と同じであるということです。
窓がどのように証明書の公開鍵を計算するのか理解してください。同じメカニズムを使用することができます。