modulecrypto
crypto
De module is fibjs
een ingebouwde coderingsalgoritmemodule. Het biedt symmetrische encryptie, asymmetrische encryptie, digest-algoritme, cryptografische generator van willekeurige getallen en andere functies. Voor gebruik require('crypto')
moet de module worden geladen via .
In crypto
de module zijn veel objecten beschikbaar, zoals:
PKey
: Asymmetrisch versleutelingsalgoritme-objectX509Cert
: Object dat wordt gebruikt om X.509-certificaten te manipulerenCipher
: Object dat wordt gebruikt om symmetrische codering te implementerenDigest
: Object dat wordt gebruikt om het digest-algoritme te implementeren
Voordat u het versleutelingsalgoritme gebruikt, moet u een sleutelobject maken. In het volgende AES
voorbeeld wordt bijvoorbeeld een sleutelobject gemaakt:
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 coderen:
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
AES
In het bovenstaande voorbeeld wordt een gecodeerd Cipher
object gemaakt , encrypt
wordt de leesbare tekst gecodeerd met behulp van de methode en wordt het coderingsresultaat geretourneerd.
Naast symmetrische encryptie-algoritmen crypto
kan de module ook asymmetrische encryptie-algoritmen en digest-algoritmen ondersteunen. Het volgende voorbeeld is bijvoorbeeld code die gebruikmaakt van PKey
en Digest
objecten gebruikt om SHA256-codering te implementeren:
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 de invoergegevens voorbereid. Vervolgens Digest
wordt een SHA256-object gemaakt en update
worden de gegevens met behulp van de methode aan de Hash-berekening toegevoegd. Nadat de berekening is voltooid, gebruikt u privateKey.sign
de methode om het handtekeningresultaat te ondertekenen en uit te voeren.
Samenvattend crypto
biedt de module een verscheidenheid aan encryptie-algoritmen, digest-algoritmen en gerelateerde objecten. Deze functies kunnen ons helpen verschillende beveiligingsvereisten te bereiken, zoals symmetrische en asymmetrische encryptie, digitale handtekeningen en encryptieverificatie.
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
Creëert een informatiesamenvattingsobject op basis van de opgegeven algoritmenaam
1static Digest crypto.createHash(String algo);
Oproepparameters:
- algo: String, die het algoritme van het informatiesamenvattingsobject specificeert
Resultaten retourneren:
- Digest, retourneert het informatiesamenvattingsobject
createHmac
Creëert een hmac-informatiesamenvattingsobject op basis van de opgegeven algoritmenaam
1
2static Digest crypto.createHmac(String algo,
Buffer key);
Oproepparameters:
- algo: String, die het algoritme van het informatiesamenvattingsobject specificeert
- key:Buffer, binaire ondertekeningssleutel
Resultaten retourneren:
- Digest, retourneert het informatiesamenvattingsobject
loadCert
Laad een certificaat in CRT/PEM/DER-formaat, dat meerdere keren kan worden opgeroepen
1static X509Cert crypto.loadCert(String filename);
Oproepparameters:
- filename: String, certificaatbestandsnaam
Resultaten retourneren:
- X509Cert, retourneert een object dat het certificaat bevat
loadCrl
Laad een intrekkingscertificaat in PEM/DER-formaat, dat meerdere keren kan worden opgeroepen
1static X509Crl crypto.loadCrl(String filename);
Oproepparameters:
- filename: String, bestandsnaam van het intrekkingscertificaat
Resultaten retourneren:
- X509Crl, retourneert een object dat het ingetrokken certificaat bevat
loadReq
Laad een certificaatverzoek in PEM/DER-formaat, dat meerdere keren kan worden aangeroepen
1static X509Req crypto.loadReq(String filename);
Oproepparameters:
- filename: String, bestandsnaam van certificaataanvraag
Resultaten retourneren:
- X509Req, retourneert een object dat het aangevraagde certificaat bevat
loadPKey
Laad een asymmetrische publieke of private sleutel in CRT/PEM/DER-formaat
1static PKey crypto.loadPKey(String filename);
Oproepparameters:
- filename: Tekenreeks, openbare sleutel of bestandsnaam van privésleutel
Resultaten retourneren:
randomBytes
Genereer willekeurige getallen van een opgegeven grootte met behulp van de havege-generator
1static Buffer crypto.randomBytes(Integer size = 16) async;
Oproepparameters:
- size: Geheel getal, specificeert de grootte van het gegenereerde willekeurige getal
Resultaten retourneren:
- Buffer, retourneert het gegenereerde willekeurige getal
simpleRandomBytes
Genereer willekeurige getallen met een lage sterkte van een opgegeven grootte, met behulp van een snel algoritme
1static Buffer crypto.simpleRandomBytes(Integer size = 16) async;
Oproepparameters:
- size: Geheel getal, specificeert de grootte van het gegenereerde willekeurige getal
Resultaten retourneren:
- Buffer, retourneert het gegenereerde willekeurige getal
pseudoRandomBytes
Genereer pseudo-willekeurige getallen van een gespecificeerde grootte met behulp van de entropiegenerator
1static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;
Oproepparameters:
- size: Geheel getal, specificeert de grootte van het gegenereerde willekeurige getal
Resultaten retourneren:
- Buffer, retourneert het gegenereerde willekeurige getal
randomFill
Gebruik willekeurige getallen om het opgegeven getal in te vullenBuffer, met behulp van de havege-generator
1
2
3static Buffer crypto.randomFill(Buffer buffer,
Integer offset = 0,
Integer size = -1) async;
Oproepparameters:
- buffer:Buffer, specificeer het gegenereerdeBuffer
- offset: Geheel getal, specificeert de startoffset, de standaardwaarde is 0
- size: Geheel getal, specificeert de grootte van het gegenereerde willekeurige getal, de standaardwaarde is buffer.length - offset
Resultaten retourneren:
- Buffer, retourneert het gegenereerde willekeurige getal
randomArt
Genereert een visueel karakterbeeld van de gegeven gegevens
1
2
3static String crypto.randomArt(Buffer data,
String title,
Integer size = 8);
Oproepparameters:
- data:Buffer, geef de gegevens op die moeten worden weergegeven
- title: String, specificeert de titel van de tekenafbeelding. Tekens van meerdere bytes veroorzaken breedtefouten.
- size: geheel getal, tekenafbeeldingsgrootte
Resultaten retourneren:
- String, retourneert de gegenereerde visuele tekenreeksafbeelding
generateKey
Genereer een persoonlijke RSA-sleutel
1static PKey crypto.generateKey(Integer size) async;
Oproepparameters:
- size: Geheel getal, specificeert de lengte van de RSA-sleutel, in bits
Resultaten retourneren:
- PKey, retourneert een object dat de gegenereerde privé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'
Resultaten retourneren:
- PKey, retourneert een object dat de gegenereerde privésleutel bevat
curve Optionele curven omvatten de volgende NIST-curven en aliassen:
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 onder meer: "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1", "BLS12381_G2"
pbkdf1
Genereer de vereiste binaire sleutel op basis van het platte tekstwachtwoord op basis van pbkdf1
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Oproepparameters:
- password:Buffer, geef het wachtwoord op dat u wilt gebruiken
- salt:Buffer, specificeer het zout dat door hmac wordt gebruikt
- iterations: geheel getal, geef het aantal iteraties op
- size: geheel getal, geef de sleutelgrootte op
- algo: Geheel getal, specificeer dehashalgoritme, ziehashmodule
Resultaten retourneren:
- Buffer, retourneert de gegenereerde binaire sleutel
Genereer de vereiste binaire sleutel op basis van het platte tekstwachtwoord op basis van pbkdf1
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Oproepparameters:
- password:Buffer, geef het wachtwoord op dat u wilt gebruiken
- salt:Buffer, specificeer het zout dat door hmac wordt gebruikt
- iterations: geheel getal, geef het aantal iteraties op
- size: geheel getal, geef de sleutelgrootte op
- algoName: String, specificeert dehashalgoritme, ziehashmodule
Resultaten retourneren:
- Buffer, retourneert de gegenereerde binaire sleutel
pbkdf2
Genereer de vereiste binaire sleutel op basis van het platte tekstwachtwoord volgens rfc2898
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Oproepparameters:
- password:Buffer, geef het wachtwoord op dat u wilt gebruiken
- salt:Buffer, specificeer het zout dat door hmac wordt gebruikt
- iterations: geheel getal, geef het aantal iteraties op
- size: geheel getal, geef de sleutelgrootte op
- algo: Geheel getal, specificeer dehashalgoritme, ziehashmodule
Resultaten retourneren:
- Buffer, retourneert de gegenereerde binaire sleutel
Genereer de vereiste binaire sleutel op basis van het platte tekstwachtwoord volgens rfc2898
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Oproepparameters:
- password:Buffer, geef het wachtwoord op dat u wilt gebruiken
- salt:Buffer, specificeer het zout dat door hmac wordt gebruikt
- iterations: geheel getal, geef het aantal iteraties op
- size: geheel getal, geef de sleutelgrootte op
- algoName: String, specificeert dehashalgoritme, ziehashmodule
Resultaten retourneren:
- Buffer, retourneert de gegenereerde binaire sleutel
getHashes
Krijg ondersteuning voor cryptomoduleshash(Abstracte) algoritmen, zoals 'md5', 'sha224'
1static Array crypto.getHashes();
Resultaten retourneren:
- Array, retourneert fibjs ondersteundhashalgoritme-array
constante
AES
Specificeer symmetrisch encryptie-algoritme AES, ondersteunt 128, 192, 256-bit sleutel, blokcodering werkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM, XTS
1const crypto.AES = 1;
DES
Specificeert het symmetrische versleutelingsalgoritme DES, ondersteunt een 64-bits sleutel en de blokcoderingswerkmodus ondersteunt ECB, CBC
1const crypto.DES = 2;
DES_EDE3
Specificeer symmetrisch encryptie-algoritme DES-EDE3, ondersteunt 192-bit sleutel, blokcodering werkmodus ondersteunt ECB, CBC
1const crypto.DES_EDE3 = 3;
CAMELLIA
Specificeer symmetrisch encryptie-algoritme CAMELLIA, ondersteunt 128, 192, 256-bit sleutel, blokcodering werkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.CAMELLIA = 4;
ARIA
Specificeer symmetrisch encryptie-algoritme ARIA, ondersteunt 128, 192, 256-bit sleutel, blokcodering werkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.ARIA = 5;
CHACHA20
Specificeer het symmetrische coderingsalgoritme CHACHA20, ondersteunt een 256-bits sleutel en de werkmodus van het blokcijfer ondersteunt POLY1305
1const crypto.CHACHA20 = 6;
SM4
Specificeer het symmetrische encryptie-algoritme SM4, de blokcoderingswerkmodus ondersteunt ECB, CBC
1const crypto.SM4 = 7;
ECB
Specificeer de werkmodus voor blokcodering ter ondersteuning van ECB
1const crypto.ECB = 1;
CBC
Specificeer de werkmodus voor blokcodering om CBC te ondersteunen
1const crypto.CBC = 2;
CFB64
Geef de blokcoderingswerkmodus op om CFB64 te ondersteunen
1const crypto.CFB64 = 3;
CFB128
Specificeer de werkmodus voor blokcodering ter ondersteuning van CFB128
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
Geef de werkmodus voor blokcodering op om GCM te ondersteunen
1const crypto.GCM = 7;
STREAM
Geef de streamcoderingsmodus op
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
Geef de blokcoderingswerkmodus op om POLY1305 te ondersteunen
1const crypto.POLY1305 = 11;
PKCS7
Geef de 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
Specificeer de vulmodus als NUL
1const crypto.ZEROS = 3;
NOPADDING
Geef de opvulmodus op als NOPADDING
1const crypto.NOPADDING = 4;