SecretKeyFactory | javax.crypto | This class defines an API for translating a secret key between its opaque SecretKey representation and its transparent javax.crypto.SecretKeySpec representation. It is much like java.security.KeyFactory , except that it works with secret (or symmetric) keys rather than with public and private (asymmetric) keys. SecretKeyFactory is algorithm-independent and provider-based, so you must obtain a SecretKeyFactory object by calling one of the static getInstance( ) factory methods and specifying the name of the desired secret-key algorithm and, optionally , the name of the provider whose implementation is desired. In Java 5.0, the "SunJCE" provider provides SecretKeyFactory implementations for algorithms with the following names : DES | DESede | PBE | PBEWithMD5AndDES | PBEWithMD5AndTripleDES | PBEWithSHA1AndDESede | PBEWithSHA1AndRC2 | | | Once you have obtained a SecretKeyFactory , use generateSecret( ) to create a SecretKey from a java.security.spec.KeySpec (or its subclass, javax.crypto.spec.SecretKeySpec ). Or call getKeySpec( ) to obtain a KeySpec for a Key object. Because there can be more than one suitable type of KeySpec , getKeySpec( ) requires a Class object to specify the type of the KeySpec to be created. See also DESKeySpec , DESedeKeySpec , and PBEKeySpec in the javax.crypto.spec package. public class SecretKeyFactory { // Protected Constructors protected SecretKeyFactory (SecretKeyFactorySpi keyFacSpi , java.security.Provider provider , String algorithm ); // Public Class Methods public static final SecretKeyFactory getInstance (String algorithm ) throws java.security.NoSuchAlgorithmException; public static final SecretKeyFactory getInstance (String algorithm , java.security.Provider provider ) throws java.security.NoSuchAlgorithmException; public static final SecretKeyFactory getInstance (String algorithm , String provider ) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException; // Public Instance Methods public final SecretKey generateSecret (java.security.spec.KeySpec keySpec ) throws java.security.spec.InvalidKeySpecException; public final String getAlgorithm ( ); public final java.security.spec.KeySpec getKeySpec (SecretKey key , Class keySpec ) throws java.security.spec.InvalidKeySpecException; public final java.security.Provider getProvider ( ); public final SecretKey translateKey (SecretKey key ) throws java.security.InvalidKeyException; } |