modulecrypto
crypto
El mòdul és fibjs
un mòdul d'algorisme de xifratge integrat. Proporciona xifratge simètric, xifratge asimètric, algorisme de resum, generador de números aleatoris criptogràfics i altres funcions. Abans d'utilitzar-lo, require('crypto')
s'ha de carregar el mòdul mitjançant .
Al crypto
mòdul, hi ha molts objectes disponibles, com ara:
PKey
: objecte d'algoritme de xifratge asimètricX509Cert
: Objecte utilitzat per manipular certificats X.509Cipher
: Objecte utilitzat per implementar el xifratge simètricDigest
: Objecte utilitzat per implementar l'algoritme de resum
Abans d'utilitzar l'algorisme de xifratge, heu de crear un objecte clau. Per exemple, l' AES
exemple següent crea un objecte clau:
1
2const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
A continuació, utilitzeu Cipher
l'objecte per xifrar el text pla:
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
A l'exemple anterior, es crea un objecte AES
xifrat , el text sense format es xifra mitjançant el mètode i es retorna el resultat del xifratge.Cipher
encrypt
A més dels algorismes de xifratge simètric, crypto
el mòdul també pot suportar algorismes de xifratge asimètric i algorismes de resum. Per exemple, l'exemple següent és el codi que utilitza PKey
i Digest
objectes per implementar el xifratge SHA256:
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
A l'exemple anterior, primer es llegeix un fitxer de clau privada i es preparen les dades d'entrada. Digest
A continuació, es crea un objecte SHA256 i update
les dades s'afegeixen al càlcul Hash mitjançant el mètode. Un cop finalitzat el càlcul, utilitzeu privateKey.sign
el mètode per signar i sortir el resultat de la signatura.
En resum, crypto
el mòdul ofereix una varietat d'algorismes de xifratge, algorismes de resum i objectes relacionats. Aquestes funcions ens poden ajudar a assolir diversos requisits de seguretat, com ara el xifratge simètric i asimètric, les signatures digitals i la verificació del xifratge.
objecte
Cipher
CipherConstructor, a veureCipher
1Cipher crypto.Cipher;
PKey
1PKey crypto.PKey;
ECKey
ECKeyConstructor, a veureECKey
1ECKey crypto.ECKey;
BlsKey
BlsKeyConstructor, a veureBlsKey
1BlsKey crypto.BlsKey;
X509Cert
X509CertConstructor, a veureX509Cert
1X509Cert crypto.X509Cert;
X509Crl
X509CrlConstructor, a veureX509Crl
1X509Crl crypto.X509Crl;
X509Req
X509ReqConstructor, a veureX509Req
1X509Req crypto.X509Req;
funció estàtica
createHash
Crea un objecte de resum d'informació basat en el nom d'algorisme donat
1static Digest crypto.createHash(String algo);
Paràmetres de trucada:
- algo: Cadena, que especifica l'algorisme de l'objecte de resum d'informació
Resultats de retorn:
- Digest, retorna l'objecte de resum d'informació
createHmac
Crea un objecte de resum d'informació hmac basat en el nom d'algorisme donat
1
2static Digest crypto.createHmac(String algo,
Buffer key);
Paràmetres de trucada:
- algo: Cadena, que especifica l'algorisme de l'objecte de resum d'informació
- key:Buffer, clau de signatura binària
Resultats de retorn:
- Digest, retorna l'objecte de resum d'informació
loadCert
Carregueu un certificat en format CRT/PEM/DER, que es pot cridar diverses vegades
1static X509Cert crypto.loadCert(String filename);
Paràmetres de trucada:
- filename: Cadena, nom del fitxer del certificat
Resultats de retorn:
- X509Cert, retorna un objecte que conté el certificat
loadCrl
Carregueu un certificat de revocació en format PEM/DER, que es pot cridar diverses vegades
1static X509Crl crypto.loadCrl(String filename);
Paràmetres de trucada:
- filename: cadena, nom del fitxer del certificat de revocació
Resultats de retorn:
- X509Crl, retorna un objecte que conté el certificat revocat
loadReq
Carregueu una sol·licitud de certificat en format PEM/DER, que es pot cridar diverses vegades
1static X509Req crypto.loadReq(String filename);
Paràmetres de trucada:
- filename: cadena, nom del fitxer de sol·licitud de certificat
Resultats de retorn:
- X509Req, retorna un objecte que conté el certificat sol·licitat
loadPKey
Carregueu una clau pública o privada asimètrica en format CRT/PEM/DER
1static PKey crypto.loadPKey(String filename);
Paràmetres de trucada:
- filename: nom de fitxer de cadena, clau pública o clau privada
Resultats de retorn:
randomBytes
Genereu números aleatoris de mida especificada mitjançant el generador havege
1static Buffer crypto.randomBytes(Integer size = 16) async;
Paràmetres de trucada:
- size: Enter, especifica la mida del nombre aleatori generat
Resultats de retorn:
- Buffer, retorna el nombre aleatori generat
simpleRandomBytes
Genereu números aleatoris de baixa intensitat d'una mida especificada mitjançant un algorisme ràpid
1static Buffer crypto.simpleRandomBytes(Integer size = 16) async;
Paràmetres de trucada:
- size: Enter, especifica la mida del nombre aleatori generat
Resultats de retorn:
- Buffer, retorna el nombre aleatori generat
pseudoRandomBytes
Genereu nombres pseudoaleatoris de mida especificada, utilitzant el generador d'entropia
1static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;
Paràmetres de trucada:
- size: Enter, especifica la mida del nombre aleatori generat
Resultats de retorn:
- Buffer, retorna el nombre aleatori generat
randomFill
Utilitzeu números aleatoris per omplir l'especificatBuffer, utilitzant el generador havege
1
2
3static Buffer crypto.randomFill(Buffer buffer,
Integer offset = 0,
Integer size = -1) async;
Paràmetres de trucada:
- buffer:Buffer, especifiqueu el generatBuffer
- offset: Enter, especifica el desplaçament inicial, el valor per defecte és 0
- size: Enter, especifica la mida del nombre aleatori generat, el valor per defecte és buffer.length - offset
Resultats de retorn:
- Buffer, retorna el nombre aleatori generat
randomArt
Genera una imatge de caràcter visual de les dades proporcionades
1
2
3static String crypto.randomArt(Buffer data,
String title,
Integer size = 8);
Paràmetres de trucada:
- data:Buffer, especifiqueu les dades que es mostraran
- title: Cadena, especifica el títol de la imatge del caràcter. Els caràcters de diversos bytes provocaran errors d'amplada.
- size: Sencer, mida de la imatge del caràcter
Resultats de retorn:
- String, retorna la imatge de cadena visual generada
generateKey
Genereu una clau privada RSA
1static PKey crypto.generateKey(Integer size) async;
Paràmetres de trucada:
- size: Enter, especifica la longitud de la clau RSA, en bits
Resultats de retorn:
- PKey, retorna un objecte que conté la clau privada generada
Genereu una clau privada de corba el·líptica
1static PKey crypto.generateKey(String curve = "secp521r1") async;
Paràmetres de trucada:
- curve: Cadena, especifica la corba el·líptica predeterminada, el valor per defecte és 'secp256r1'
Resultats de retorn:
- PKey, retorna un objecte que conté la clau privada generada
corba Les corbes opcionals inclouen corbes NIST i àlies de la següent manera:
corba | Àlies |
---|---|
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" |
Altres corbes compatibles inclouen: "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1" "BLS12381_G1" 81_G223 ",
pbkdf1
Genereu la clau binària necessària a partir de la contrasenya de text sense format basada en pbkdf1
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Paràmetres de trucada:
- password:Buffer, especifiqueu la contrasenya que voleu utilitzar
- salt:Buffer, especifiqueu la sal utilitzada per hmac
- iterations: Enter, especifiqueu el nombre d'iteracions
- size: Sencer, especifiqueu la mida de la clau
- algo: Enter, especifiqueu elhashalgorisme, vegeuhashmòdul
Resultats de retorn:
- Buffer, retorna la clau binària generada
Genereu la clau binària necessària a partir de la contrasenya de text sense format basada en pbkdf1
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Paràmetres de trucada:
- password:Buffer, especifiqueu la contrasenya que voleu utilitzar
- salt:Buffer, especifiqueu la sal utilitzada per hmac
- iterations: Enter, especifiqueu el nombre d'iteracions
- size: Sencer, especifiqueu la mida de la clau
- algoName: Cadena, especifica elhashalgorisme, vegeuhashmòdul
Resultats de retorn:
- Buffer, retorna la clau binària generada
pbkdf2
Genereu la clau binària necessària a partir de la contrasenya de text sense format segons rfc2898
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Paràmetres de trucada:
- password:Buffer, especifiqueu la contrasenya que voleu utilitzar
- salt:Buffer, especifiqueu la sal utilitzada per hmac
- iterations: Enter, especifiqueu el nombre d'iteracions
- size: Sencer, especifiqueu la mida de la clau
- algo: Enter, especifiqueu elhashalgorisme, vegeuhashmòdul
Resultats de retorn:
- Buffer, retorna la clau binària generada
Genereu la clau binària necessària a partir de la contrasenya de text sense format segons rfc2898
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Paràmetres de trucada:
- password:Buffer, especifiqueu la contrasenya que voleu utilitzar
- salt:Buffer, especifiqueu la sal utilitzada per hmac
- iterations: Enter, especifiqueu el nombre d'iteracions
- size: Sencer, especifiqueu la mida de la clau
- algoName: Cadena, especifica elhashalgorisme, vegeuhashmòdul
Resultats de retorn:
- Buffer, retorna la clau binària generada
getHashes
Obteniu suport per al mòdul criptogràfichash(Resum) Algorismes, com ara 'md5', 'sha224'
1static Array crypto.getHashes();
Resultats de retorn:
- Array, retorna fibjs compatibleshashmatriu d'algoritmes
constant
AES
Especifiqueu l'algorisme de xifratge simètric AES, admet clau de 128, 192, 256 bits, el mode de treball de xifratge de blocs admet ECB, CBC, CFB128, CTR, GCM, CCM, XTS
1const crypto.AES = 1;
DES
Especifica l'algoritme de xifratge simètric DES, admet clau de 64 bits i el mode de treball de xifratge de blocs admet ECB, CBC
1const crypto.DES = 2;
DES_EDE3
Especifiqueu l'algorisme de xifratge simètric DES-EDE3, admet clau de 192 bits, el mode de treball de xifratge de blocs admet ECB, CBC
1const crypto.DES_EDE3 = 3;
CAMELLIA
Especifiqueu l'algorisme de xifratge simètric CAMELLIA, admet clau de 128, 192, 256 bits, el mode de treball de xifratge de blocs admet ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.CAMELLIA = 4;
ARIA
Especifiqueu l'algorisme de xifratge simètric ARIA, admet clau de 128, 192, 256 bits, el mode de treball de xifratge de blocs admet ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.ARIA = 5;
CHACHA20
Especifiqueu l'algoritme de xifratge simètric CHACHA20, admet clau de 256 bits i el mode de treball de xifratge de bloc admet POLY1305
1const crypto.CHACHA20 = 6;
SM4
Especifiqueu l'algorisme de xifratge simètric SM4, el mode de treball de xifratge de blocs admet ECB, CBC
1const crypto.SM4 = 7;
ECB
Especifiqueu el mode de treball de xifrat de blocs per admetre l'ECB
1const crypto.ECB = 1;
CBC
Especifiqueu el mode de treball de xifrat de blocs per admetre CBC
1const crypto.CBC = 2;
CFB64
Especifiqueu el mode de treball de xifrat de blocs per admetre CFB64
1const crypto.CFB64 = 3;
CFB128
Especifiqueu el mode de treball de xifratge de blocs per admetre CFB128
1const crypto.CFB128 = 4;
OFB
Especifiqueu el mode de treball de xifratge de blocs per admetre OFB
1const crypto.OFB = 5;
CTR
Especifiqueu el mode de treball de xifrat de blocs per admetre el CTR
1const crypto.CTR = 6;
GCM
Especifiqueu el mode de treball de xifrat de blocs per admetre GCM
1const crypto.GCM = 7;
STREAM
Especifiqueu el mode de xifratge de flux
1const crypto.STREAM = 8;
CCM
Especifiqueu el mode de treball de xifratge de blocs per admetre CCM
1const crypto.CCM = 9;
XTS
Especifiqueu el mode de treball de xifratge de blocs per admetre XTS
1const crypto.XTS = 10;
POLY1305
Especifiqueu el mode de treball de xifrat de blocs per admetre POLY1305
1const crypto.POLY1305 = 11;
PKCS7
Especifiqueu el mode de farciment com a PKCS7
1const crypto.PKCS7 = 0;
ONE_AND_ZEROS
Especifiqueu el mode d'ompliment com a ONE_AND_ZEROS
1const crypto.ONE_AND_ZEROS = 1;
ZEROS_AND_LEN
Especifiqueu el mode d'ompliment com a ZEROS_AND_LEN
1const crypto.ZEROS_AND_LEN = 2;
ZEROS
Especifiqueu el mode d'ompliment com a ZEROS
1const crypto.ZEROS = 3;
NOPADDING
Especifiqueu el mode de farciment com NOPAADDING
1const crypto.NOPADDING = 4;