Cómo cifrar y descifrar datos utilizando la API Crypto de Bouncy Castle
importar org.bouncycastle.crypto.engines.*;
importar org.bouncycastle.crypto.modes.*;
import org.bouncycastle.crypto.params.*;
// Uso de Bouncy Castle
// Un ejemplo simple del uso de la API de cifrado para realizar cifrado DES en datos arbitrarios
public class Encryptor {
cifrado BufferedBlockCipher privado;
clave KeyParameter privada;
// Inicializa el motor de cifrado.
// La longitud de la clave de matriz debe ser de al menos 8 bytes.
cifrado público (byte[] clave){
/*
cifrado = nuevo QuiltBlockCipher(
nuevo CBCBlockCipher(
nuevo DESEngine() ));
*/
cifrado = nuevo QuiltBlockCipher(
nuevo CBCBlockCipher(
nuevo BlowfishEngine() ));
this.key = new KeyParameter( key );
}
// Inicializa el motor de cifrado.
// La longitud de la clave de cadena debe ser de al menos 8 bytes.
cifrador público( clave de cadena ){
this( key.getBytes() );
}
// Realiza un trabajo específico de cifrar y descifrar cadenas
byte privado[] callCipher( byte[] datos )
lanza CryptoException {
int size =
cipher.getOutputSize( datos.
byte[] resultado = nuevo byte[ tamaño ]
int olen = cipher.processBytes( datos, 0, / p>
datos.longitud, resultado, 0 );
olen += cipher.processBytes( datos, 0,
datos.longitud, resultado, 0 } <); /p>
// Cifre cualquier matriz de bytes y devuelva los datos cifrados como una matriz de bytes
byte[] público sincronizado encrypt( byte[] datos )
throws CryptoException {
if( data == null || data.length == 0 ){
devuelve nuevo byte[0];
} p>
cipher.init (verdadero, clave);