ObjectCipher
Objecte d'algoritme de xifratge simètric
L'objecte xifrat pertanycryptomòdul, creeu:
1var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);
A continuació es pren AES com a exemple per demostrar com s'utilitzen objectes de xifratge per a xifrar i desxifrar:
En primer lloc, hem d'obtenir un objecte de xifratge simètricament xifrat, com ara l'algorisme de xifratge 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);
Al codi anterior, vam randomBytes
generar un nombre aleatori de 16 bytes com a clau AES mitjançant el mètode. A continuació, vam crear un objecte de xifrat de l'algorisme AES, utilitzant el mode de treball de xifrat de blocs ECB i utilitzant el nombre aleatori generat com a clau.
A continuació, encrypt
xifrem el text pla utilitzant el mètode de l'objecte Xifrat:
1
2
3const plaintext = 'Hello, world!';
const encrypted = cipher.encrypt(plaintext);
console.log(encrypted); // output encrypted data
Al codi anterior, utilitzem encrypt
el mètode per xifrar la cadena Hello, world!
i sortir el resultat xifrat.
Pel que fa al codi anterior, cal parar atenció als punts següents:
- Abans de realitzar el xifratge, heu de crear un objecte de xifratge simètricament xifrat i establir paràmetres com ara l'algorisme de xifratge, la contrasenya i el mode de treball de xifratge de blocs.
- Després de trucar al mètode de xifratge, podem obtenir les dades xifrades, que normalment són aBufferobjecte. Cal tenir en compte que la sortida són dades binàries, que s'han d'imprimir amb el mètode corresponent, com ara utilitzar
Hex
etc. per a la conversió.
Si volem desxifrar les dades, també necessitem un objecte Xifrat, que també es basa en l'algorisme AES i utilitza la mateixa clau i el mateix mode de treball de xifrat de blocs:
1
2
3const decipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);
const decrypted = decipher.decrypt(encrypted);
console.log(decrypted.toString()); // output decrypted data
Aquí, creem un nou objecte de xifrat, utilitzem la mateixa clau i el mateix mode de treball de contrasenya i utilitzem decrypt
el mètode per desxifrar les dades xifrades. El resultat del desxifrat és aBufferL'objecte s'ha de convertir en una cadena per sortir correctament.
relació hereditària
Constructor
Cipher
Constructor de xifratge, només utilitzat per a la inicialització ARC4
1
2new Cipher(Integer provider,
Buffer key);
Paràmetres de trucada:
- provider: Sencer, especifiqueu l'algorisme de xifratge
- key:Buffer, especifiqueu la contrasenya de xifratge i desxifrat
Constructor de xifratge
1
2
3new Cipher(Integer provider,
Integer mode,
Buffer key);
Paràmetres de trucada:
- provider: Sencer, especifiqueu l'algorisme de xifratge
- mode: Enter, especifica el mode de treball del xifratge de blocs
- key:Buffer, especifiqueu la contrasenya de xifratge i desxifrat
Constructor de xifratge
1
2
3
4new Cipher(Integer provider,
Integer mode,
Buffer key,
Buffer iv);
Paràmetres de trucada:
- provider: Sencer, especifiqueu l'algorisme de xifratge
- mode: Enter, especifica el mode de treball del xifratge de blocs
- key:Buffer, especifiqueu la contrasenya de xifratge i desxifrat
- iv:Buffer, especifiqueu el vector inicial
propietats dels membres
name
String, retorna el nom de l'algorisme actual
1readonly String Cipher.name;
keySize
Enter, retorna la longitud actual de la contrasenya de l'algorisme en bits
1readonly Integer Cipher.keySize;
ivSize
Enter, retorna la longitud del vector inicial de l'algorisme actual, en bytes
1readonly Integer Cipher.ivSize;
blockSize
Enter, retorna la longitud actual del bloc de dades de l'algorisme en bytes
1readonly Integer Cipher.blockSize;
funció de membre
paddingMode
Utilitzeu el mode d'ompliment
1Cipher.paddingMode(Integer mode);
Paràmetres de trucada:
- mode: Enter, especifica el mode de farciment, el valor predeterminat és PADDING_PKCS7
encrypt
Xifra les dades amb el xifrat d'algorisme actual
1Buffer Cipher.encrypt(Buffer data) async;
Paràmetres de trucada:
- data:Buffer, especifiqueu les dades que voleu xifrar
Resultats de retorn:
- Buffer, retorna les dades xifrades
decrypt
Desxifrar dades utilitzant el xifrat d'algorisme actual
1Buffer Cipher.decrypt(Buffer data) async;
Paràmetres de trucada:
- data:Buffer, especifiqueu les dades a desxifrar
Resultats de retorn:
- Buffer, retorna les dades desxifrades
toString
Retorna la representació de cadena de l'objecte. En general, es retorna "[Objecte natiu]". L'objecte es pot tornar a implementar segons les seves pròpies característiques.
1String Cipher.toString();
Resultats de retorn:
- String, retorna la representació de cadena de l'objecte
toJSON
Retorna una representació en format JSON de l'objecte, generalment retornant una col·lecció de propietats llegibles definides per l'objecte.
1Value Cipher.toJSON(String key = "");
Paràmetres de trucada:
- key: Corda, no utilitzada
Resultats de retorn:
- Value, retorna un valor que conté JSON serializable