Ключевыми объектами и ключевыми спецификациями (KeySpecs) являются два разных представления ключевых данных.
Шифры используют ключевые объекты для инициализации своих алгоритмов шифрования, но ключи, возможно, необходимо преобразовать в более переносимый формат для передачи или хранения.
Прозрачное представление ключей означает, что вы можете получить доступ к каждому значению материала материала отдельно, используя один из методов получения, определенных в соответствующем классе спецификации.
For example, DSAPrivateKeySpec defines getX, getP, getQ, and getG methods, to access the private key x, and the DSA algorithm parameters used to calculate the key(the prime p, the sub-prime q, and the base g).
Если ключ хранится на аппаратном устройстве, его спецификация может содержать информацию, которая помогает идентифицировать ключ на представлении device.This противопоставляется с непрозрачным представлением, как определено Key интерфейс, в котором вы не имеют прямого доступа к ключевым полям материала. Другими словами, «непрозрачное» представление дает вам ограниченный доступ к ключу - только три метода, определенные интерфейсом Key: getAlgorithm, getFormat и getEncoded.
Ключ может быть указан специфичным для алгоритма способом или в формате, не зависящем от алгоритма (например, ASN.1).
For example, a DSA private key may be specified by its components x, p, q, and g (eg: DSAPrivateKeySpec), or it may be specified using its DER encoding (eg: PKCS8EncodedKeySpec).
KeyFactory и SecretKeyFactory классы могут быть использованы для преобразования между непрозрачными и прозрачными ключевыми представлениями, что есть между клавишами и KeySpecs.
Reference и более подробную информацию можно получить в: https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#KeySpecs