Oggetto oggetto incorporato

ObjectCipher

Oggetto algoritmo di crittografia simmetrica

L'oggetto cifrato appartiene acryptomodulo, creare:

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

Di seguito viene preso AES come esempio per dimostrare come utilizzare gli oggetti Cipher per la crittografia e la decrittografia:

Innanzitutto, dobbiamo ottenere un oggetto Cipher crittografato simmetricamente, 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, abbiamo randomBytesgenerato un numero casuale di 16 byte come chiave AES attraverso il metodo. Quindi, abbiamo creato un oggetto Cipher dell'algoritmo AES, utilizzando la modalità di funzionamento della crittografia a blocchi della BCE e utilizzando il numero casuale generato come chiave.

Successivamente, encryptcrittifichiamo il testo in chiaro utilizzando il metodo dell'oggetto Cipher:

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

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

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

  • Prima di eseguire la crittografia, è necessario creare un oggetto Cipher crittografato simmetricamente e impostare parametri quali algoritmo di crittografia, password e modalità di funzionamento della crittografia a blocchi.
  • Dopo aver chiamato il metodo di crittografia, possiamo ottenere i dati crittografati, che di solito sono aBufferoggetto. Va notato che l'output sono dati binari, che devono essere stampati nel metodo corrispondente, ad esempio utilizzando Hexecc. per la conversione.

Se vogliamo decrittografare i dati, abbiamo bisogno anche di un oggetto Cipher, anch'esso basato sull'algoritmo AES e che utilizza la stessa chiave e la stessa modalità di funzionamento della crittografia 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 modalità di lavoro di chiave e password e utilizziamo decryptil metodo per decrittografare i dati crittografati. Il risultato della decrittazione è aBufferL'oggetto deve essere convertito in una stringa per essere visualizzato correttamente.

rapporto ereditario

Costruttore

Cipher

Costruttore di cifratura, utilizzato solo per l'inizializzazione ARC4

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

Parametri di chiamata:

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

Costruttore di cifrari

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

Parametri di chiamata:

  • provider: Numero intero, specifica l'algoritmo di crittografia
  • mode: Numero intero, specifica la modalità di funzionamento della crittografia a blocchi
  • key:Buffer, specificare 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: Numero intero, specifica l'algoritmo di crittografia
  • mode: Numero intero, specifica la modalità di funzionamento della crittografia a blocchi
  • key:Buffer, specificare la password di crittografia e decrittografia
  • iv:Buffer, specificare il vettore iniziale

proprietà dei membri

name

String, 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

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

1
readonly Integer Cipher.ivSize;

blockSize

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

1
readonly Integer Cipher.blockSize;

funzione membro

paddingMode

Utilizza la modalità di riempimento

1
Cipher.paddingMode(Integer mode);

Parametri di chiamata:

  • mode: Numero intero, 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, specificare i dati da crittografare

Risultati restituiti:

  • 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, specificare i dati da decrittografare

Risultati restituiti:

  • Buffer, restituisce i dati decrittografati

toString

Restituisce la rappresentazione in formato stringa dell'oggetto. Generalmente viene restituito "[Oggetto nativo]". L'oggetto può essere reimplementato in base alle proprie caratteristiche.

1
String Cipher.toString();

Risultati restituiti:

  • String, restituisce la rappresentazione di stringa dell'oggetto

toJSON

Restituisce una rappresentazione in formato JSON dell'oggetto, generalmente restituendo una raccolta di proprietà leggibili definite dall'oggetto.

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

Parametri di chiamata:

  • key: Stringa, non utilizzata

Risultati restituiti:

  • Value, restituisce un valore contenente JSON serializzabile