module cryptovaluta
crypto
module is een fibjs
ingebouwde encryptie-algoritmemodule. Het biedt functies zoals symmetrische codering, asymmetrische codering, digest-algoritme en cryptografische generator van willekeurige getallen. Voor gebruik moet de module require('crypto')
worden geladen .
In crypto
de module zijn veel objecten beschikbaar, zoals:
PKey
: asymmetrisch versleutelingsalgoritme-objectX509Cert
: Object voor het manipuleren van X.509-certificatenCipher
: Object dat wordt gebruikt om symmetrische codering te implementerenDigest
: object dat wordt gebruikt om het digest-algoritme te implementeren
Voordat u het coderingsalgoritme gebruikt, moet u een sleutelobject maken, zoals het volgende voorbeeld van het maken van een AES
sleutelobject :
1
2const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
Gebruik vervolgens Cipher
het object om de leesbare tekst te versleutelen:
1
2
3
4const c = new crypto.Cipher(crypto.AES, crypto.ECB, key);
const data = 'hello, world';
const encrypted = c.encrypt(data).hex();
console.log(encrypted); // output encrypted data
In het bovenstaande voorbeeld wordt een AES
versleuteld Cipher
, de leesbare tekst wordt versleuteld met behulp van encrypt
de methode en het versleutelde resultaat wordt geretourneerd.
Naast symmetrische encryptie-algoritmen crypto
kan de module ook asymmetrische encryptie-algoritmen en digest-algoritmen ondersteunen. Het volgende voorbeeld is bijvoorbeeld de code om SHA256-codering te implementeren PKey
met objecten en:Digest
1
2
3
4
5
6const privateKey = crypto.loadPKey('private.pem'); // read private key from file
const data = 'hello, world';
const digest = new crypto.Digest(hash.SHA256);
digest.update(data);
const signature = privateKey.sign(digest.digest());
console.log(signature); // output signature
In het bovenstaande voorbeeld wordt eerst een privésleutelbestand gelezen en worden invoergegevens voorbereid. Vervolgens wordt een SHA256- Digest
object en update
worden de gegevens toegevoegd aan de hash-berekening met behulp van de methode. Nadat de berekening is voltooid, gebruikt u privateKey.sign
de methode om het handtekeningresultaat te ondertekenen en uit te voeren.
Kortom, crypto
de module biedt een verscheidenheid aan coderingsalgoritmen, samenvattingsalgoritmen en gerelateerde objecten. Deze functies kunnen ons helpen verschillende beveiligingsvereisten te bereiken, zoals symmetrische en asymmetrische codering, digitale handtekening en coderingsverificatie.
voorwerp
Cipher
1Cipher crypto.Cipher;
PKey
1PKey crypto.PKey;
ECKey
1ECKey crypto.ECKey;
BlsKey
1BlsKey crypto.BlsKey;
X509Cert
X509Certconstructeur, zieX509Cert
1X509Cert crypto.X509Cert;
X509Crl
X509Crlconstructeur, zieX509Crl
1X509Crl crypto.X509Crl;
X509Req
X509Reqconstructeur, zieX509Req
1X509Req crypto.X509Req;
statische functie
createHash
Maakt een infosummary-object op basis van de gegeven algoritmenaam
1static Digest crypto.createHash(String algo);
Oproepparameters:
- algo: String, specificeert het algoritme van het message digest-object
retour resultaat:
- Digest, retourneert een berichtoverzichtsobject
createHmac
Maak een hmac info-overzichtsobject van de gegeven algoritmenaam
1
2static Digest crypto.createHmac(String algo,
Buffer key);
Oproepparameters:
- algo: String, specificeert het algoritme van het message digest-object
- key:Buffer, de binaire ondertekeningssleutel
retour resultaat:
- Digest, retourneert een berichtoverzichtsobject
loadCert
Laad een certificaat in CRT/PEM/DER-indeling, dat meerdere keren kan worden aangeroepen
1static X509Cert crypto.loadCert(String filename);
Oproepparameters:
- filename: Tekenreeks, bestandsnaam certificaat
retour resultaat:
- X509Cert, retourneert een object dat het certificaat bevat
loadCrl
Laad een ingetrokken certificaat in PEM/DER-indeling, dat meerdere keren kan worden aangeroepen
1static X509Crl crypto.loadCrl(String filename);
Oproepparameters:
- filename: Tekenreeks, bestandsnaam van ingetrokken certificaat
retour resultaat:
- X509Crl, retourneert een object dat het ingetrokken certificaat bevat
loadReq
Laad een certificaataanvraag in PEM/DER-indeling, die meerdere keren kan worden aangeroepen
1static X509Req crypto.loadReq(String filename);
Oproepparameters:
- filename: Tekenreeks, bestandsnaam certificaataanvraag
retour resultaat:
- X509Req, retourneert een object dat het gevraagde certificaat bevat
loadPKey
Laad een asymmetrische openbare of privésleutel in CRT/PEM/DER-indeling
1static PKey crypto.loadPKey(String filename);
Oproepparameters:
- filename: Bestandsnaam van tekenreeks, openbare sleutel of persoonlijke sleutel
retour resultaat:
randomBytes
Genereer een willekeurig getal van de opgegeven grootte met behulp van de havege-generator
1static Buffer crypto.randomBytes(Integer size) async;
Oproepparameters:
- size: geheel getal, specificeert de grootte van het gegenereerde willekeurige getal
retour resultaat:
- Buffer, retourneert het gegenereerde willekeurige getal
simpleRandomBytes
Genereer willekeurige getallen met een lage sterkte van de opgegeven grootte, met behulp van een snel algoritme
1static Buffer crypto.simpleRandomBytes(Integer size) async;
Oproepparameters:
- size: geheel getal, specificeert de grootte van het gegenereerde willekeurige getal
retour resultaat:
- Buffer, retourneert het gegenereerde willekeurige getal
pseudoRandomBytes
Genereer een pseudo-willekeurig getal van de opgegeven grootte met behulp van de entropiegenerator
1static Buffer crypto.pseudoRandomBytes(Integer size) async;
Oproepparameters:
- size: geheel getal, specificeert de grootte van het gegenereerde willekeurige getal
retour resultaat:
- Buffer, retourneert het gegenereerde willekeurige getal
randomFill
Vul de opgegeven met willekeurige getallenBuffer, met behulp van de havege-generator
1
2
3static Buffer crypto.randomFill(Buffer buffer,
Integer offset = 0,
Integer size = -1) async;
Oproepparameters:
- buffer:Buffer, met vermelding van het gegenereerdeBuffer
- offset: geheel getal, specificeer de beginoffset, de standaardwaarde is 0
- size: Integer, specificeert de grootte van het gegenereerde willekeurige getal, de standaardwaarde is buffer.length - offset
retour resultaat:
- Buffer, retourneert het gegenereerde willekeurige getal
randomArt
Genereer een visueel karakterbeeld van de gegeven gegevens
1
2
3static String crypto.randomArt(Buffer data,
String title,
Integer size = 8);
Oproepparameters:
- data:Buffer, specificeert de gegevens die moeten worden weergegeven
- title: String, Specificeert de titel van de karakterafbeelding, karakters van meerdere bytes zullen breedtefouten veroorzaken
- size: geheel getal, afbeeldingsgrootte van tekens
retour resultaat:
- String, retourneert de resulterende gevisualiseerde tekenreeksafbeelding
generateKey
Genereer een persoonlijke RSA-sleutel
1static PKey crypto.generateKey(Integer size) async;
Oproepparameters:
- size: Integer, specificeer de lengte van de RSA-sleutel in bits
retour resultaat:
- PKey, retourneert een object dat de gegenereerde persoonlijke sleutel bevat
Genereer een privésleutel met een elliptische curve
1static PKey crypto.generateKey(String curve = "secp521r1") async;
Oproepparameters:
- curve: String, specificeert de vooraf ingestelde elliptische curve, de standaardwaarde is 'secp256r1'
retour resultaat:
- PKey, retourneert een object dat de gegenereerde persoonlijke sleutel bevat
curve Optionele curven omvatten NIST-curven en aliassen als volgt:
kromme | alias |
---|---|
NIST P-192 | 'NIST P-192', 'p192', 'P-192', 'prime192v1', 'secp192r1' |
NIST P-224 | 'NIST P-224', 'p224', 'P-224', 'prime224v1', 'secp224r1' |
NIST P-256 | 'NIST P-256', 'p256', 'P-256', 'prime256v1', 'secp256r1' |
NIST P-384 | 'NIST P-384', 'p384', 'P-384', 'prime384v1', 'secp384r1' |
NIST P-521 | 'NIST P-521', 'p521', 'P-521', 'prime521v1', 'secp521r1' |
Andere ondersteunde curven zijn: "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1", "BLS12381_G2"
pbkdf1
Genereer volgens pbkdf1 de vereiste binaire sleutel volgens het leesbare wachtwoord
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Oproepparameters:
- password:Buffer, geef het te gebruiken wachtwoord op
- salt:Buffer, specificeert het zout dat wordt gebruikt door hmac
- iterations: Integer, specificeert het aantal iteraties
- size: geheel getal, specificeert de sleutelgrootte
- algo: geheel getal, specificeert dehashalgoritme, ziehashmoduul
retour resultaat:
- Buffer, retourneert de gegenereerde binaire sleutel
Genereer volgens pbkdf1 de vereiste binaire sleutel volgens het leesbare wachtwoord
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Oproepparameters:
- password:Buffer, geef het te gebruiken wachtwoord op
- salt:Buffer, specificeert het zout dat wordt gebruikt door hmac
- iterations: Integer, specificeert het aantal iteraties
- size: geheel getal, specificeert de sleutelgrootte
- algoName: Tekenreeks, specificeert dehashalgoritme, ziehashmoduul
retour resultaat:
- Buffer, retourneert de gegenereerde binaire sleutel
pbkdf2
Genereer volgens rfc2898 de vereiste binaire sleutel volgens het leesbare wachtwoord
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Oproepparameters:
- password:Buffer, geef het te gebruiken wachtwoord op
- salt:Buffer, specificeert het zout dat wordt gebruikt door hmac
- iterations: Integer, specificeert het aantal iteraties
- size: geheel getal, specificeert de sleutelgrootte
- algo: geheel getal, specificeert dehashalgoritme, ziehashmoduul
retour resultaat:
- Buffer, retourneert de gegenereerde binaire sleutel
Genereer volgens rfc2898 de vereiste binaire sleutel volgens het leesbare wachtwoord
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Oproepparameters:
- password:Buffer, geef het te gebruiken wachtwoord op
- salt:Buffer, specificeert het zout dat wordt gebruikt door hmac
- iterations: Integer, specificeert het aantal iteraties
- size: geheel getal, specificeert de sleutelgrootte
- algoName: Tekenreeks, specificeert dehashalgoritme, ziehashmoduul
retour resultaat:
- Buffer, retourneert de gegenereerde binaire sleutel
getHashes
Verkrijg degenen die worden ondersteund door de cryptomodulehash(abstract) algoritme, zoals 'md5', 'sha224'
1static Array crypto.getHashes();
retour resultaat:
- Array, retourneert fibjs ondersteundhashalgoritme array
constante
AES
Specificeer symmetrisch coderingsalgoritme AES, ondersteuning voor 128, 192, 256-bits sleutel, blokcoderingswerkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM, XTS
1const crypto.AES = 1;
DES
Specificeer symmetrisch coderingsalgoritme DES, ondersteuning voor 64-bits sleutel, blokcoderingswerkmodus ondersteunt ECB, CBC
1const crypto.DES = 2;
DES_EDE3
Specificeer symmetrisch coderingsalgoritme DES-EDE3, ondersteuning voor 192-bits sleutel, blokcoderingswerkmodus ondersteunt ECB, CBC
1const crypto.DES_EDE3 = 3;
CAMELLIA
Specificeer symmetrisch versleutelingsalgoritme CAMELLIA, ondersteuning 128, 192, 256-bits sleutel, blokcijferwerkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.CAMELLIA = 4;
ARIA
Specificeer symmetrisch coderingsalgoritme ARIA, ondersteuning voor 128, 192, 256-bits sleutel, blokcijferwerkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.ARIA = 5;
CHACHA20
Specificeer het symmetrische versleutelingsalgoritme CHACHA20, ondersteun 256-bits sleutel en ondersteun POLY1305 in werkmodus voor blokcodering
1const crypto.CHACHA20 = 6;
SM4
Specificeer het symmetrische versleutelingsalgoritme SM4, blokcijferwerkmodus ondersteunt ECB, CBC
1const crypto.SM4 = 7;
ECB
Specificeer de werkmodus voor blokcodering om ECB te ondersteunen
1const crypto.ECB = 1;
CBC
Specificeer de werkmodus voor blokcodering om CBC te ondersteunen
1const crypto.CBC = 2;
CFB64
Specificeer de werkmodus voor blokcodering om CFB64 te ondersteunen
1const crypto.CFB64 = 3;
CFB128
Specificeer de werkmodus voor blokcodering om CFB128 te ondersteunen
1const crypto.CFB128 = 4;
OFB
Specificeer de werkmodus voor blokcodering om OFB te ondersteunen
1const crypto.OFB = 5;
CTR
Specificeer de werkmodus voor blokcodering om CTR te ondersteunen
1const crypto.CTR = 6;
GCM
Specificeer de werkmodus voor blokcodering om GCM te ondersteunen
1const crypto.GCM = 7;
STREAM
Specificeert de stroomcoderingsmodus
1const crypto.STREAM = 8;
CCM
Specificeer de werkmodus voor blokcodering om CCM te ondersteunen
1const crypto.CCM = 9;
XTS
Specificeer de werkmodus voor blokcodering om XTS te ondersteunen
1const crypto.XTS = 10;
POLY1305
Specificeer de werkmodus voor blokcodering om POLY1305 te ondersteunen
1const crypto.POLY1305 = 11;
PKCS7
Geef opvulmodus op als PKCS7
1const crypto.PKCS7 = 0;
ONE_AND_ZEROS
Geef de vulmodus op als ONE_AND_ZEROS
1const crypto.ONE_AND_ZEROS = 1;
ZEROS_AND_LEN
Geef de vulmodus op als ZEROS_AND_LEN
1const crypto.ZEROS_AND_LEN = 2;
ZEROS
Geef de vulmodus op als NUL
1const crypto.ZEROS = 3;
NOPADDING
Geef opvulmodus op als NOPADDING
1const crypto.NOPADDING = 4;