Objecte objecte incorporat

ObjectCipher

Objecte d'algoritme de xifratge simètric

L'objecte xifrat pertanycryptomòdul, creeu:

1
var 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 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);

Al codi anterior, vam randomBytesgenerar 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ó, encryptxifrem el text pla utilitzant el mètode de l'objecte Xifrat:

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

Al codi anterior, utilitzem encryptel 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 Hexetc. 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 3
const 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 decryptel 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 2
new 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 3
new 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 4
new 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

1
readonly String Cipher.name;

keySize

Enter, retorna la longitud actual de la contrasenya de l'algorisme en bits

1
readonly Integer Cipher.keySize;

ivSize

Enter, retorna la longitud del vector inicial de l'algorisme actual, en bytes

1
readonly Integer Cipher.ivSize;

blockSize

Enter, retorna la longitud actual del bloc de dades de l'algorisme en bytes

1
readonly Integer Cipher.blockSize;

funció de membre

paddingMode

Utilitzeu el mode d'ompliment

1
Cipher.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

1
Buffer 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

1
Buffer 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.

1
String 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.

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

Paràmetres de trucada:

  • key: Corda, no utilitzada

Resultats de retorn:

  • Value, retorna un valor que conté JSON serializable