Obxecto obxecto incorporado

ObjectCipher

Obxecto de algoritmo de cifrado simétrico

O obxecto cifrado pertencecryptomódulo, crear:

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

O seguinte toma AES como exemplo para demostrar como usar obxectos Cipher para cifrar e descifrar:

En primeiro lugar, necesitamos obter un obxecto Cipher cifrado simétricamente, como o 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);

No código anterior, xeramos randomBytesun número aleatorio de 16 bytes como clave AES a través do método. A continuación, creamos un obxecto Cipher do algoritmo AES, utilizando o modo de traballo de cifrado de bloques ECB e utilizando o número aleatorio xerado como clave.

A continuación, encryptciframos o texto plano usando o método do obxecto Cipher:

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

No código anterior, usamos encrypto método para cifrar a cadea Hello, world!e producir o resultado cifrado.

En canto ao código anterior, cómpre prestar atención aos seguintes puntos:

  • Antes de realizar o cifrado, cómpre crear un obxecto Cipher cifrado simétricamente e establecer parámetros como o algoritmo de cifrado, o contrasinal e o modo de traballo de cifrado de bloques.
  • Despois de chamar ao método de cifrado, podemos obter os datos cifrados, que normalmente é aBufferobxecto. Nótese que a saída son datos binarios, que deben imprimirse no método correspondente, como usar Hexetc. para a conversión.

Se queremos descifrar os datos, tamén necesitamos un obxecto Cipher, que tamén está baseado no algoritmo AES e utiliza a mesma clave e modo de traballo de cifrado de bloques:

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 novo obxecto Cipher, usamos o mesmo modo de traballo de clave e contrasinal e usamos decrypto método para descifrar os datos cifrados. O resultado do descifrado é aBufferO obxecto debe converterse nunha cadea para que se saia correctamente.

relación de herdanza

Construtor

Cipher

Construtor de cifrado, só usado para a inicialización de ARC4

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

Parámetros de chamada:

  • provider: Número enteiro, especifique o algoritmo de cifrado
  • key:Buffer, especifique o contrasinal de cifrado e descifrado

Construtor de cifrado

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

Parámetros de chamada:

  • provider: Número enteiro, especifique o algoritmo de cifrado
  • mode: Enteiro, especifica o modo de traballo do cifrado de bloques
  • key:Buffer, especifique o contrasinal de cifrado e descifrado

Construtor de cifrado

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

Parámetros de chamada:

  • provider: Número enteiro, especifique o algoritmo de cifrado
  • mode: Enteiro, especifica o modo de traballo do cifrado de bloques
  • key:Buffer, especifique o contrasinal de cifrado e descifrado
  • iv:Buffer, especifique o vector inicial

propiedades dos membros

name

String, devolve o nome do algoritmo actual

1
readonly String Cipher.name;

keySize

Enteiro, devolve a lonxitude do contrasinal do algoritmo actual en bits

1
readonly Integer Cipher.keySize;

ivSize

Enteiro, devolve a lonxitude do vector inicial do algoritmo actual, en bytes

1
readonly Integer Cipher.ivSize;

blockSize

Enteiro, devolve a lonxitude actual do bloque de datos do algoritmo en bytes

1
readonly Integer Cipher.blockSize;

función de membro

paddingMode

Usa o modo de recheo

1
Cipher.paddingMode(Integer mode);

Parámetros de chamada:

  • mode: Enteiro, especifica o modo de recheo, o valor predeterminado é PADDING_PKCS7

encrypt

Cifra datos usando o algoritmo de cifrado actual

1
Buffer Cipher.encrypt(Buffer data) async;

Parámetros de chamada:

  • data:Buffer, especifique os datos que se van cifrar

Resultados de devolución:

  • Buffer, devolve os datos cifrados

decrypt

Descifrar datos usando o algoritmo de cifrado actual

1
Buffer Cipher.decrypt(Buffer data) async;

Parámetros de chamada:

  • data:Buffer, especifique os datos a descifrar

Resultados de devolución:

  • Buffer, devolve os datos descifrados

toString

Devolve a representación en cadea do obxecto. Polo xeral, devólvese "[Obxecto nativo]". O obxecto pódese volver implementar segundo as súas propias características.

1
String Cipher.toString();

Resultados de devolución:

  • String, devolve a representación en cadea do obxecto

toJSON

Devolve unha representación en formato JSON do obxecto, devolvendo xeralmente unha colección de propiedades lexibles definidas polo obxecto.

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

Parámetros de chamada:

  • key: Cadena, non usada

Resultados de devolución:

  • Value, devolve un valor que contén JSON serializable