📄 blowfishkeyfactory.java
字号:
package au.net.aba.crypto.provider;
/*
* $Id: BlowfishKeyFactory.java,v 1.10 1999/02/18 06:28:47 leachbj Exp $
* $Author: leachbj $
*
* Copyright (C) 1996-1998 Australian Business Access Pty Ltd.
* All rights reserved.
*
* Use, modification, copying and distribution of this software is subject the
* terms and conditions of the ABA Public Licence. See the file
* "PUBLIC_LICENCE" for additional information.
*
* If you have not received a copy of the Public Licence, you must destroy all
* copies of this file immediately.
*
* $Source: /aba/CVSROOT/jdk1.1/src/au.net.aba/crypto/provider/BlowfishKeyFactory.java,v $
* $Revision: 1.10 $
* $Date: 1999/02/18 06:28:47 $
* $State: Exp $
*/
import au.net.aba.crypto.spec.BlowfishKeySpec;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.security.InvalidKeyException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactorySpi;
import javax.crypto.spec.SecretKeySpec;
/**
* This class is used to convert Blowfish keys into a format usable by the
* usable by the ABA provider. The supported KeySpec classes are
* BlowfishKeySpec and SecretKeySpec. In the case of the SecretKeySpec
* the key data must not be encoded. The supported Key class is
* BlowfishKey.
* <p>
* This class should not be instantiated directly, instead use the
* java.security.KeyFactory interface.
*
* @see java.security.KeyFactory
*/
public class BlowfishKeyFactory extends SecretKeyFactorySpi
{
public final static String ident = "$Id: BlowfishKeyFactory.java,v 1.10 1999/02/18 06:28:47 leachbj Exp $";
/**
* Generates a Blowfish SecretKey object from the provided key
* specification (key material). This class supports the
* BlowfishKeySpec and SecretKeySpec KeySpec class.
*
* @returns The secret key.
* @exception InvalidKeySpecException The provided KeySpec was not
* a BlowfishKeySpec or SecretKeySpec instance.
*/
protected SecretKey engineGenerateSecret(
KeySpec keySpec)
throws InvalidKeySpecException
{
if (keySpec instanceof BlowfishKeySpec)
{
BlowfishKeySpec bfKspec = (BlowfishKeySpec)keySpec;
return new BlowfishKey(bfKspec.getKey());
}
else if (keySpec instanceof SecretKeySpec)
{
SecretKeySpec skspec = (SecretKeySpec)keySpec;
if (!"Blowfish".equals(skspec.getAlgorithm()))
{
throw new InvalidKeySpecException(
"SecretKeySpec not for Blowfish");
}
if (!"RAW".equals(skspec.getFormat()))
{
throw new InvalidKeySpecException(
"Unknown format in KeySpec");
}
return new BlowfishKey(skspec.getEncoded());
}
throw new InvalidKeySpecException("Invalid KeySpec");
}
/**
* Returns a specification (key material) of the given key object in
* the requested format.
* <p>
* Can convert from an ABA Blowfish Key into a SecretKeySpec or
* a BlowfishKeySpec.
*
* @param key the key
* @param keySpec the requested format in which the key material shall
* be returned
* @returns the underlying key specification (key material) in the
* requested format
* @exception InvalidKeySpecException if the requested key
* specification is inappropriate for the given key, or the given
* key cannot be dealt with (e.g., the given key has an
* unrecognised format).
*/
protected KeySpec engineGetKeySpec(
SecretKey key,
Class keySpec)
throws InvalidKeySpecException
{
if (key instanceof BlowfishKey)
{
if (SecretKeySpec.class.isAssignableFrom(keySpec))
{
return new SecretKeySpec(key.getEncoded(),
"Blowfish");
}
else if (BlowfishKeySpec.class.isAssignableFrom(keySpec))
{
try
{
return new BlowfishKeySpec(key.getEncoded());
}
catch (InvalidKeyException e)
{
throw new InvalidKeySpecException(
e.getMessage());
}
}
}
throw new InvalidKeySpecException("not implemented");
}
/**
* Translates an Blowfish key object, whose provider may be unknown or
* potentially untrusted, into a corresponding key object of this key
* factory.
*
* @param key - the key whose provider is unknown or untrusted
* @returns the translated key
* @exception InvalidKeyException if the given key cannot be processed
* by this key factory.
*/
protected SecretKey engineTranslateKey(
SecretKey key)
throws InvalidKeyException
{
if (!key.getAlgorithm().equals("Blowfish"))
{
throw new InvalidKeyException("not a Blowfish key");
}
return new BlowfishKey(key.getEncoded());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -