PublicKey
- это базовый класс для представления открытого ключа асимметричного криптографического алгоритма. По своей природе это скорее структура, чем единичное значение.
Например, если вы работаете с алгоритмом RSA, вы можете привести свой открытый ключ к
RSAPublicKey
, а затем получить доступ к modulus
и exponent
.
if (pubKey instanceof RSAPublicKey) {
RSAPublicKey rsaPubKey = (RSAPublicKey)pubKey;
BigInteger modulus = rsaPubKey.getModulus();
BigInteger exponent = rsaPubKey.getPublicExponent();
System.out.println("Modulus " + modulus.toString());
System.out.println("Exponent " + exponent.toString());
}
Для криптографии на эллиптической кривой ключ состоит из двух значений - параметров эллиптической кривой affineX
и affineY
if (pubKey instanceof ECPublicKey) {
ECPublicKey ecPubKey = (ECPublicKey)pubKey;
ECPoint point = ecPubKey.getW();
BigInteger affineX = point.getAffineX();
BigInteger affineY = point.getAffineY();
System.out.println("Affine X " + affineX.toString());
System.out.println("Affine Y " + affineY.toString());
}
Таким же образом можно получить доступ к внутренней структуре PrivateKey
.