キーオブジェクトとキー仕様(KeySpec)は、キーデータの2つの異なる表現です。
暗号化では、暗号化アルゴリズムを初期化するために鍵オブジェクトを使用しますが、送信または格納のために鍵をより移植性の高いフォーマットに変換する必要があります。
キーの透過表示は、対応する仕様クラスで定義されている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の3つのメソッドだけです。
鍵は、アルゴリズム固有の方法またはアルゴリズムに依存しない符号化形式(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