Object-ingebouwd object

ObjectCijfer

Symmetrisch coderingsalgoritme-object

Cipher-object behoort totcryptomodule, maak:

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

Het volgende neemt AES als voorbeeld om aan te tonen hoe u Cipher-objecten kunt gebruiken voor codering en decodering:

Eerst moeten we een symmetrisch gecodeerd Cipher-object verkrijgen, zoals het AES-coderingsalgoritme:

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

In de bovenstaande code hebben we randomBytesvia de methode een willekeurig getal van 16 bytes gegenereerd als de AES-sleutel. Vervolgens hebben we een Cipher-object van het AES-algoritme gemaakt, waarbij we de werkmodus voor blokcodering van de ECB gebruiken en het gegenereerde willekeurige getal als sleutel gebruiken.

Vervolgens encryptcoderen we de leesbare tekst met behulp van de methode van het Cipher-object:

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

In de bovenstaande code gebruiken we encryptde methode om de string te coderen Hello, world!en het gecodeerde resultaat uit te voeren.

Met betrekking tot de bovenstaande code moet u op de volgende punten letten:

  • Voordat u de codering uitvoert, moet u een symmetrisch gecodeerd Cipher-object maken en parameters instellen zoals het coderingsalgoritme, het wachtwoord en de werkmodus voor blokcodering.
  • Nadat we de coderingsmethode hebben aangeroepen, kunnen we de gecodeerde gegevens verkrijgen, wat meestal eenBuffervoorwerp. Opgemerkt moet worden dat de uitvoer binaire gegevens is, die op de overeenkomstige manier moeten worden afgedrukt, zoals het gebruik Hexenz. voor conversie.

Als we de gegevens willen decoderen, hebben we ook een Cipher-object nodig, dat ook gebaseerd is op het AES-algoritme en dezelfde sleutel en blokcoderingswerkmodus gebruikt:

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

Hier maken we een nieuw Cipher-object, gebruiken we dezelfde sleutel- en wachtwoordwerkmodus en gebruiken we decryptde methode om de gecodeerde gegevens te decoderen. Het resultaat van de decodering is aBufferObject moet worden geconverteerd naar een string om correct te kunnen worden uitgevoerd.

erfenis relatie

Constructeur

Cipher

Cipher-constructor, alleen gebruikt voor ARC4-initialisatie

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

Oproepparameters:

  • provider: geheel getal, geef het coderingsalgoritme op
  • key:Buffer, geef het wachtwoord voor codering en decodering op

Cipher-constructor

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

Oproepparameters:

  • provider: geheel getal, geef het coderingsalgoritme op
  • mode: Geheel getal, specificeert de werkmodus van het blokcijfer
  • key:Buffer, geef het wachtwoord voor codering en decodering op

Cipher-constructor

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

Oproepparameters:

  • provider: geheel getal, geef het coderingsalgoritme op
  • mode: Geheel getal, specificeert de werkmodus van het blokcijfer
  • key:Buffer, geef het wachtwoord voor codering en decodering op
  • iv:Buffer, specificeer de initiële vector

eigenschappen van leden

name

String, retourneert de huidige algoritmenaam

1
readonly String Cipher.name;

keySize

Geheel getal, retourneert de huidige wachtwoordlengte van het algoritme in bits

1
readonly Integer Cipher.keySize;

ivSize

Geheel getal, retourneert de initiële vectorlengte van het huidige algoritme, in bytes

1
readonly Integer Cipher.ivSize;

blockSize

Geheel getal, retourneert de huidige lengte van het algoritmegegevensblok in bytes

1
readonly Integer Cipher.blockSize;

lid functie

paddingMode

Gebruik de vulmodus

1
Cipher.paddingMode(Integer mode);

Oproepparameters:

  • mode: Geheel getal, specificeert de opvulmodus, de standaardwaarde is PADDING_PKCS7

encrypt

Versleutel gegevens met behulp van het huidige algoritme

1
Buffer Cipher.encrypt(Buffer data) async;

Oproepparameters:

  • data:Buffer, geef de gegevens op die moeten worden gecodeerd

Resultaten retourneren:

  • Buffer, retourneert de gecodeerde gegevens

decrypt

Decodeer gegevens met behulp van het huidige algoritme

1
Buffer Cipher.decrypt(Buffer data) async;

Oproepparameters:

  • data:Buffer, specificeer de gegevens die moeten worden gedecodeerd

Resultaten retourneren:

  • Buffer, retourneert de gedecodeerde gegevens

toString

Retourneert de tekenreeksweergave van het object. Over het algemeen wordt '[Native Object]' geretourneerd. Het object kan opnieuw worden geïmplementeerd op basis van zijn eigen kenmerken.

1
String Cipher.toString();

Resultaten retourneren:

  • String, retourneert de tekenreeksrepresentatie van het object

toJSON

Retourneert een weergave in JSON-indeling van het object, waarbij doorgaans een verzameling leesbare eigenschappen wordt geretourneerd die door het object zijn gedefinieerd.

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

Oproepparameters:

  • key: Tekenreeks, niet gebruikt

Resultaten retourneren:

  • Value, retourneert een waarde die JSON-serialiseerbaar bevat