ObjectCijfer
Symmetrisch coderingsalgoritme-object
Cipher-object behoort totcryptomodule, maak:
1var 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
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);
In de bovenstaande code hebben we randomBytes
via 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 encrypt
coderen we de leesbare tekst met behulp van de methode van het Cipher-object:
1
2
3const plaintext = 'Hello, world!';
const encrypted = cipher.encrypt(plaintext);
console.log(encrypted); // output encrypted data
In de bovenstaande code gebruiken we encrypt
de 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
Hex
enz. 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
3const 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 decrypt
de 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
2new 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
3new 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
4new 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
1readonly String Cipher.name;
keySize
Geheel getal, retourneert de huidige wachtwoordlengte van het algoritme in bits
1readonly Integer Cipher.keySize;
ivSize
Geheel getal, retourneert de initiële vectorlengte van het huidige algoritme, in bytes
1readonly Integer Cipher.ivSize;
blockSize
Geheel getal, retourneert de huidige lengte van het algoritmegegevensblok in bytes
1readonly Integer Cipher.blockSize;
lid functie
paddingMode
Gebruik de vulmodus
1Cipher.paddingMode(Integer mode);
Oproepparameters:
- mode: Geheel getal, specificeert de opvulmodus, de standaardwaarde is PADDING_PKCS7
encrypt
Versleutel gegevens met behulp van het huidige algoritme
1Buffer 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
1Buffer 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.
1String 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.
1Value Cipher.toJSON(String key = "");
Oproepparameters:
- key: Tekenreeks, niet gebruikt
Resultaten retourneren:
- Value, retourneert een waarde die JSON-serialiseerbaar bevat