Kettle utiliza un script java para cifrar y descifrar datos

El jefe de desarrollo me dio una tarea por la mañana para encriptar un campo en una tabla al extraer datos de una tabla con una tetera. El requisito es usar el cifrado AES. Primero busqué y encontré el algoritmo de cifrado Base64 de un hermano mayor. Aquí está el cifrado usando Base64 y AES.

Método 1: cifrado y descifrado Base64

Primero, cree su propio diagrama de proceso completo:

Inserte la descripción de la imagen aquí
Estas son las operaciones principales en el código java: el paso de mensaje es el paso de origen de datos y el paso de destino es el paso de salida de datos.

Inserte la descripción de la imagen aquí
El código de cifrado y descifrado es el siguiente:

import java.util.Base64;

import java.util.*;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
    
    
  if (first) {
    
    
    first = false;

  }

  Object[] r = getRow();

  if (r == null) {
    
    
    setOutputDone();
    return false;
  }

    r = createOutputRow(r, data.outputRowMeta.size());
  //加密
    String foobar1 = get(Fields.In, "NAME").getString(r);
  byte[] bytes = foobar1.getBytes();
  String encoded = Base64.getEncoder().encodeToString(bytes);
  get(Fields.Out, "NAME").setValue(r, encoded);
  //String foobar2 = get(Fields.In, "IC_CARD").getString(r);
  //byte[] bytes2 = foobar2.getBytes();
  //String encoded1 = Base64.getEncoder().encodeToString(bytes2);
  //get(Fields.Out, "IC_CARD").setValue(r, encoded1);
   //解密(加密解密我是分了两张表,加密的内容在表一,解密的内容是从把表一的内动解密到表二,所以这样写解密的代码)
   //String foobar1 = get(Fields.In, "NAME").getString(r);
   //byte[] decoded = Base64.getDecoder().decode(foobar1);
  //String decodeStr = new String(decoded);
  //get(Fields.Out, "NAME").setValue(r, decodeStr);
  //String foobar2 = get(Fields.In, "IC_CARD").getString(r);
    //byte[] decoded2 = Base64.getDecoder().decode(foobar2);
  //String decodeStr2 = new String(decoded2);
  //get(Fields.Out, "IC_CARD").setValue(r, decodeStr2);
  putRow(data.outputRowMeta, r);

  return true;
}

Método 2: cifrado AES

Después de usar el método 1, el jefe dijo que usara encriptación AES, y luego hay un componente encriptado en el hervidor, y el componente tiene un algoritmo de encriptación AES, así que use este componente
. La imagen completa es la siguiente: Cómo usar el
Inserte la descripción de la imagen aquí
componente de encriptación simétrica:
Inserte la descripción de la imagen aquí
la clave Se generará en mysql.
El sql para generar la clave es: select hex ('1234567890adbcde')

Esta es la declaración del campo en la inserción / actualización
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_39040527/article/details/106813294
Recomendado
Clasificación