Objeto incorporado

Cifrado de objetos

Objeto de algoritmo de cifrado simétrico

El objeto cifrado pertenece acryptomódulo, crear:

1
var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);

A continuación se toma AES como ejemplo para demostrar cómo utilizar objetos Cipher para cifrar y descifrar:

Primero, necesitamos obtener un objeto Cipher cifrado simétricamente, como el algoritmo de cifrado AES:

1 2 3
const crypto = require('crypto'); const key = crypto.randomBytes(16); // generate a 16-byte random key const cipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);

En el código anterior, randomBytesgeneramos un número aleatorio de 16 bytes como clave AES a través del método. Luego, creamos un objeto Cipher del algoritmo AES, usando el modo de trabajo de cifrado en bloque ECB y usando el número aleatorio generado como clave.

A continuación, encryptciframos el texto sin formato utilizando el método del objeto Cipher:

1 2 3
const plaintext = 'Hello, world!'; const encrypted = cipher.encrypt(plaintext); console.log(encrypted); // output encrypted data

En el código anterior, utilizamos encryptel método para cifrar la cadena Hello, world!y generar el resultado cifrado.

Con respecto al código anterior, debe prestar atención a los siguientes puntos:

  • Antes de realizar el cifrado, debe crear un objeto Cipher cifrado simétricamente y establecer parámetros como el algoritmo de cifrado, la contraseña y el modo de trabajo del cifrado en bloque.
  • Después de llamar al método de cifrado, podemos obtener los datos cifrados, que generalmente son unBufferobjeto. Cabe señalar que la salida son datos binarios, que deben imprimirse con el método correspondiente, como usar, Hexetc., para la conversión.

Si queremos descifrar los datos, también necesitamos un objeto Cipher, que también se basa en el algoritmo AES y utiliza la misma clave y modo de trabajo de cifrado en bloque:

1 2 3
const decipher = new crypto.Cipher(crypto.AES, crypto.ECB, key); const decrypted = decipher.decrypt(encrypted); console.log(decrypted.toString()); // output decrypted data

Aquí, creamos un nuevo objeto Cipher, usamos el mismo modo de trabajo de clave y contraseña y usamos decryptel método para descifrar los datos cifrados. El resultado del descifrado es unBufferEl objeto debe convertirse en una cadena para que se genere correctamente.

relación de herencia

Constructor

Cipher

Constructor de cifrado, solo utilizado para la inicialización de ARC4

1 2
new Cipher(Integer provider, Buffer key);

Parámetros de llamada:

  • provider: Entero, especifique el algoritmo de cifrado
  • key:Buffer, especifique la contraseña de cifrado y descifrado

constructor de cifrado

1 2 3
new Cipher(Integer provider, Integer mode, Buffer key);

Parámetros de llamada:

  • provider: Entero, especifique el algoritmo de cifrado
  • mode: Entero, especifica el modo de trabajo del cifrado en bloque.
  • key:Buffer, especifique la contraseña de cifrado y descifrado

constructor de cifrado

1 2 3 4
new Cipher(Integer provider, Integer mode, Buffer key, Buffer iv);

Parámetros de llamada:

  • provider: Entero, especifique el algoritmo de cifrado
  • mode: Entero, especifica el modo de trabajo del cifrado en bloque.
  • key:Buffer, especifique la contraseña de cifrado y descifrado
  • iv:Buffer, especifica el vector inicial

propiedades de miembros

name

Cadena, devuelve el nombre del algoritmo actual

1
readonly String Cipher.name;

keySize

Entero, devuelve la longitud de la contraseña del algoritmo actual en bits

1
readonly Integer Cipher.keySize;

ivSize

Entero, devuelve la longitud del vector inicial del algoritmo actual, en bytes

1
readonly Integer Cipher.ivSize;

blockSize

Entero, devuelve la longitud del bloque de datos del algoritmo actual en bytes

1
readonly Integer Cipher.blockSize;

función miembro

paddingMode

Usar modo de relleno

1
Cipher.paddingMode(Integer mode);

Parámetros de llamada:

  • mode: Entero, especifica el modo de relleno, el valor predeterminado es PADDING_PKCS7

encrypt

Cifrar datos utilizando el algoritmo de cifrado actual

1
Buffer Cipher.encrypt(Buffer data) async;

Parámetros de llamada:

  • data:Buffer, especifique los datos que se cifrarán

Resultados de devolución:

  • Buffer, devuelve los datos cifrados

decrypt

Descifrar datos utilizando el algoritmo de cifrado actual

1
Buffer Cipher.decrypt(Buffer data) async;

Parámetros de llamada:

  • data:Buffer, especifique los datos a descifrar

Resultados de devolución:

  • Buffer, devuelve los datos descifrados

toString

Devuelve la representación de cadena del objeto. Generalmente, se devuelve "[Objeto nativo]". El objeto se puede volver a implementar de acuerdo con sus propias características.

1
String Cipher.toString();

Resultados de devolución:

  • String, devuelve la representación de cadena del objeto

toJSON

Devuelve una representación en formato JSON del objeto, que generalmente devuelve una colección de propiedades legibles definidas por el objeto.

1
Value Cipher.toJSON(String key = "");

Parámetros de llamada:

  • key: Cadena, no utilizada

Resultados de devolución:

  • Value, devuelve un valor que contiene JSON serializable