Schlüsselobjekte und Schlüsselspezifikationen (KeySpecs) sind zwei verschiedene Darstellungen von Schlüsseldaten.
Codierer verwenden Schlüsselobjekte, um ihre Verschlüsselungsalgorithmen zu initialisieren, aber Schlüssel müssen möglicherweise in ein tragbareres Format für Übertragung oder Speicherung konvertiert werden.
Eine transparente Darstellung von Schlüsseln bedeutet, dass Sie auf jeden Schlüsselmaterialwert einzeln zugreifen können, und zwar über eine der in der entsprechenden Spezifikationsklasse definierten get-Methoden.
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).
Wenn der Schlüssel auf einem Hardwaregerät gespeichert ist, seine Spezifikationsinformationen enthalten, die den Schlüssel auf der device.This Darstellung mit einer undurchsichtigen Darstellung steht im Gegensatz helfen bei der Identifizierung, wie durch die Key-Schnittstelle definiert, in dem Sie keinen direkten Zugriff auf die Schlüsselmaterialfelder haben. Mit anderen Worten, eine "undurchsichtige" Darstellung gibt Ihnen begrenzten Zugriff auf den Schlüssel - nur die drei Methoden, die von der Key-Schnittstelle definiert werden: getAlgorithm, getFormat und getEncoded.
Ein Schlüssel kann auf algorithmenspezifische Weise oder in einem algorithmusunabhängigen Codierungsformat (wie ASN.1) angegeben werden.
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).
Die KeyFactory und SecretKeyFactory Klassen können zwischen opaken und transparenten Tastendarstellungen zu konvertieren, die verwendet werden, zwischen den Tasten und KeySpecs ist.
Referenz und weitere Informationen finden Sie unter: https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#KeySpecs