關鍵對象和關鍵規範(KeySpecs)是關鍵數據的兩種不同表示。
密碼使用密鑰對象來初始化他們的加密算法,但密鑰可能需要轉換爲更便攜的格式進行傳輸或存儲。
密鑰的透明表示意味着您可以通過相應規範類中定義的get方法之一單獨訪問每個密鑰材料值。
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接口定義的三種方法: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之間不透明和透明鍵表示之間進行轉換。
參考,並提供更多的細節: https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec.html#KeySpecs