2014-02-21 5 views
0

Учитывая сертификат и открытый ключ CA, я хочу расшифровать часть подписи только для ее использования для проверки. Расшифровка подписи RSA определяется как: H'=s^e mod n, где s является подписью. Я сделал это дешифрование вручную, используя BigInteger, как следующий код, но это не выглядит хорошо, потому что результат не выглядит одинаковым, когда я генерирую хэш-значение SHA1 сертификата (используя метод getTBSCertificate()). Существует ли класс java (открытый ключ сертификата + CA) и создается расшифрованная подпись.Как расшифровать подпись сертификата X509

File f= new File("/Users/AA/Desktop/InCommonServerCA"); // path for CA certificate 
CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
BufferedInputStream in = new BufferedInputStream(new FileInputStream(f)); 
Certificate certCA = cf.generateCertificate(in); 

RSAPublicKey pub = (RSAPublicKey) certCA.getPublicKey(); 
BigInteger n= pub.getModulus(); // to get the CA's modulus (n) 
BigInteger e=pub.getPublicExponent(); // to get the CA's exponent (e) 
in.close(); 

// implement `H'=s^e mod n` 
BigInteger h1, signature; 
signature= new BigInteger(x509cert.getSignature()); 
h1=signature.modPow(e, n); 

ответ

1

Вам нужно только позвонить по Certificate.verify().

Нет такой вещи, как дешифрование цифровой подписи.

+0

Да, это вроде бы победит цель, а? – jgitter

Смежные вопросы