ObjectCipher
Oggetto dell'algoritmo di crittografia simmetrica
Gli oggetti cifrati appartengono acryptomodulo, creare:
1var 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
3const 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 randomBytes
il 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 encrypt
il metodo :
1
2
3const plaintext = 'Hello, world!';
const encrypted = cipher.encrypt(plaintext);
console.log(encrypted); // output encrypted data
Nel codice sopra, usiamo encrypt
il 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
Hex
per 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
3const 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 decrypt
il 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
2new 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
3new 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
4new 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
1readonly String Cipher.name;
keySize
Intero, restituisce la lunghezza della password dell'algoritmo corrente in bit
1readonly Integer Cipher.keySize;
ivSize
Integer, restituisce la lunghezza del vettore iniziale dell'algoritmo corrente in byte
1readonly Integer Cipher.ivSize;
blockSize
Integer, restituisce la lunghezza del blocco di dati dell'algoritmo corrente in byte
1readonly Integer Cipher.blockSize;
funzione membro
paddingMode
utilizzare la modalità di riempimento
1Cipher.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
1Buffer 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
1Buffer 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
1String 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
1Value Cipher.toJSON(String key = "");
Parametri di chiamata:
- key: stringa, non utilizzata
risultato di ritorno:
- Value, che restituisce un valore serializzabile in JSON