Oggetto oggetto incorporato

ObjectCipher

Oggetto dell'algoritmo di crittografia simmetrica

Gli oggetti cifrati appartengono acryptomodulo, creare:

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

Quanto segue prende AES come esempio per dimostrare come utilizzare gli oggetti Cipher per la crittografia e la decrittografia:

Innanzitutto, dobbiamo ottenere un oggetto Cipher crittografato simmetrico, come l'algoritmo di crittografia 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);

Nel codice sopra, usiamo randomBytesil metodo per generare un numero casuale di 16 byte come chiave AES. Quindi, abbiamo creato un oggetto Cipher per l'algoritmo AES, utilizzando la modalità di funzionamento del cifrario a blocchi ECB e utilizzando il numero casuale generato come chiave.

Successivamente, crittografiamo il testo in chiaro utilizzando encryptil metodo :

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

Nel codice sopra, usiamo encryptil metodo per Hello, world!crittografare la stringa e restituire il risultato crittografato.

Per il codice sopra, è necessario prestare attenzione ai seguenti punti:

  • Prima della crittografia, è necessario creare un oggetto Cipher per la crittografia simmetrica e impostare parametri come l'algoritmo di crittografia, la password e la modalità di funzionamento del cifrario a blocchi.
  • Dopo aver chiamato il metodo di crittografia, possiamo ottenere i dati crittografati, che di solito sono aBufferoggetto. Va notato che l'output è costituito da dati binari, che devono essere stampati in modo corrispondente, ad esempio utilizzando Hexper convertire.

Se vogliamo decrittografare i dati, abbiamo anche bisogno di un oggetto Cipher, anch'esso basato sull'algoritmo AES, e utilizza la stessa chiave e la stessa modalità di funzionamento del cifrario a blocchi:

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

Qui, creiamo un nuovo oggetto Cipher, utilizziamo la stessa chiave e la stessa modalità di lavoro della password e utilizziamo decryptil metodo per decrittografare i dati crittografati. Il risultato decifrato è aBufferOggetto, che deve essere convertito in una stringa per essere emesso correttamente.

rapporto ereditario

Costruttore

Cipher

Costruttore di crittografia, utilizzato solo per l'inizializzazione di ARC4

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

Parametri di chiamata:

  • provider: Integer, specifica l'algoritmo di crittografia
  • key:Buffer, specifica la password di crittografia e decrittografia

Costruttore di cifrari

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

Parametri di chiamata:

  • provider: Integer, specifica l'algoritmo di crittografia
  • mode: Integer, specifica la modalità di lavoro del cifrario a blocchi
  • key:Buffer, specifica la password di crittografia e decrittografia

Costruttore di cifrari

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

Parametri di chiamata:

  • provider: Integer, specifica l'algoritmo di crittografia
  • mode: Integer, specifica la modalità di lavoro del cifrario a blocchi
  • key:Buffer, specifica la password di crittografia e decrittografia
  • iv:Buffer, specificando il vettore iniziale

attributo membro

name

Stringa, restituisce il nome dell'algoritmo corrente

1
readonly String Cipher.name;

keySize

Intero, restituisce la lunghezza della password dell'algoritmo corrente in bit

1
readonly Integer Cipher.keySize;

ivSize

Integer, restituisce la lunghezza del vettore iniziale dell'algoritmo corrente in byte

1
readonly Integer Cipher.ivSize;

blockSize

Integer, restituisce la lunghezza del blocco di dati dell'algoritmo corrente in byte

1
readonly Integer Cipher.blockSize;

funzione membro

paddingMode

utilizzare la modalità di riempimento

1
Cipher.paddingMode(Integer mode);

Parametri di chiamata:

  • mode: Integer, specifica la modalità di riempimento, il valore predefinito è PADDING_PKCS7

encrypt

Crittografare i dati utilizzando la cifratura dell'algoritmo corrente

1
Buffer Cipher.encrypt(Buffer data) async;

Parametri di chiamata:

  • data:Buffer, specifica i dati da crittografare

risultato di ritorno:

  • Buffer, restituisce i dati crittografati

decrypt

Decrittografare i dati utilizzando la cifratura dell'algoritmo corrente

1
Buffer Cipher.decrypt(Buffer data) async;

Parametri di chiamata:

  • data:Buffer, specifica i dati da decrittografare

risultato di ritorno:

  • Buffer, restituisce i dati decrittografati

toString

Restituisce la rappresentazione in stringa dell'oggetto, generalmente restituisce "[Native Object]", l'oggetto può essere reimplementato secondo le proprie caratteristiche

1
String Cipher.toString();

risultato di ritorno:

  • String, restituisce una rappresentazione in forma di stringa dell'oggetto

toJSON

Restituisce la rappresentazione in formato JSON dell'oggetto, in genere restituisce una raccolta di proprietà leggibili definite dall'oggetto

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

Parametri di chiamata:

  • key: stringa, non utilizzata

risultato di ritorno:

  • Value, che restituisce un valore serializzabile in JSON