ObjectCipher
Oggetto algoritmo di crittografia simmetrica
L'oggetto cifrato appartiene acryptomodulo, creare:
1var 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
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, abbiamo randomBytes
generato 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, encrypt
crittifichiamo il testo in chiaro utilizzando il metodo dell'oggetto Cipher:
1
2
3const plaintext = 'Hello, world!';
const encrypted = cipher.encrypt(plaintext);
console.log(encrypted); // output encrypted data
Nel codice precedente, utilizziamo encrypt
il 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
Hex
ecc. 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
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 modalità di lavoro di chiave e password e utilizziamo decrypt
il 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
2new 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
3new 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
4new 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
1readonly String Cipher.name;
keySize
Intero, restituisce la lunghezza della password dell'algoritmo corrente in bit
1readonly Integer Cipher.keySize;
ivSize
Intero, restituisce la lunghezza del vettore iniziale dell'algoritmo corrente, in byte
1readonly Integer Cipher.ivSize;
blockSize
Intero, restituisce la lunghezza del blocco dati dell'algoritmo corrente in byte
1readonly Integer Cipher.blockSize;
funzione membro
paddingMode
Utilizza la modalità di riempimento
1Cipher.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
1Buffer 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
1Buffer 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.
1String 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.
1Value Cipher.toJSON(String key = "");
Parametri di chiamata:
- key: Stringa, non utilizzata
Risultati restituiti:
- Value, restituisce un valore contenente JSON serializzabile