modulecrypto
crypto
O módulo é fibjs
un módulo de algoritmo de cifrado integrado. Ofrece cifrado simétrico, cifrado asimétrico, algoritmo de dixestión, xerador de números aleatorios criptográficos e outras funcións. Antes de usar, require('crypto')
o módulo debe cargarse mediante .
No crypto
módulo, hai moitos obxectos dispoñibles, como:
PKey
: obxecto de algoritmo de cifrado asimétricoX509Cert
: Obxecto usado para manipular certificados X.509Cipher
: Obxecto usado para implementar o cifrado simétricoDigest
: Obxecto utilizado para implementar o algoritmo de resumo
Antes de usar o algoritmo de cifrado, cómpre crear un obxecto clave. Por exemplo, o seguinte AES
exemplo crea un obxecto clave:
1
2const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
A continuación, use Cipher
o obxecto para cifrar o texto plano:
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
No exemplo anterior, créase un obxecto AES
cifrado , o texto plano cífrase mediante o método e devólvese o resultado da cifrado.Cipher
encrypt
Ademais dos algoritmos de cifrado simétrico, crypto
o módulo tamén pode soportar algoritmos de cifrado asimétrico e algoritmos de dixestión. Por exemplo, o seguinte exemplo é código que usa PKey
e Digest
obxectos para implementar o cifrado 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
No exemplo anterior, primeiro lese un ficheiro de clave privada e prepáranse os datos de entrada. A continuación, Digest
créase un obxecto SHA256 e update
os datos engádense ao cálculo Hash mediante o método. Despois de completar o cálculo, use privateKey.sign
o método para asinar e emitir o resultado da sinatura.
En resumo, crypto
o módulo ofrece unha variedade de algoritmos de cifrado, algoritmos de resumo e obxectos relacionados. Estas funcións poden axudarnos a cumprir varios requisitos de seguridade, como o cifrado simétrico e asimétrico, sinaturas dixitais e verificación de cifrado.
obxecto
Cipher
1Cipher crypto.Cipher;
PKey
1PKey crypto.PKey;
ECKey
1ECKey crypto.ECKey;
BlsKey
1BlsKey crypto.BlsKey;
X509Cert
X509CertConstrutor, verX509Cert
1X509Cert crypto.X509Cert;
X509Crl
1X509Crl crypto.X509Crl;
X509Req
1X509Req crypto.X509Req;
función estática
createHash
Crea un obxecto de resumo de información baseado no nome do algoritmo dado
1static Digest crypto.createHash(String algo);
Parámetros de chamada:
- algo: Cadea, que especifica o algoritmo do obxecto de resumo de información
Resultados de devolución:
- Digest, devolve o obxecto de resumo de información
createHmac
Crea un obxecto de resumo de información hmac baseado no nome do algoritmo dado
1
2static Digest crypto.createHmac(String algo,
Buffer key);
Parámetros de chamada:
- algo: Cadea, que especifica o algoritmo do obxecto de resumo de información
- key:Buffer, clave de sinatura binaria
Resultados de devolución:
- Digest, devolve o obxecto de resumo de información
loadCert
Cargue un certificado en formato CRT/PEM/DER, que se pode chamar varias veces
1static X509Cert crypto.loadCert(String filename);
Parámetros de chamada:
- filename: Cadea, nome do ficheiro de certificado
Resultados de devolución:
- X509Cert, devolve un obxecto que contén o certificado
loadCrl
Cargue un certificado de revogación en formato PEM/DER, que se pode chamar varias veces
1static X509Crl crypto.loadCrl(String filename);
Parámetros de chamada:
- filename: Cadea, nome do ficheiro do certificado de revogación
Resultados de devolución:
- X509Crl, devolve un obxecto que contén o certificado revogado
loadReq
Cargue unha solicitude de certificado en formato PEM/DER, que se pode chamar varias veces
1static X509Req crypto.loadReq(String filename);
Parámetros de chamada:
- filename: Cadea, nome do ficheiro de solicitude de certificado
Resultados de devolución:
- X509Req, devolve un obxecto que contén o certificado solicitado
loadPKey
Cargue unha clave pública ou privada asimétrica en formato CRT/PEM/DER
1static PKey crypto.loadPKey(String filename);
Parámetros de chamada:
- filename: Nome do ficheiro de cadea, chave pública ou chave privada
Resultados de devolución:
randomBytes
Xera números aleatorios de tamaño especificado usando o xerador havege
1static Buffer crypto.randomBytes(Integer size = 16) async;
Parámetros de chamada:
- size: Número enteiro, especifica o tamaño do número aleatorio xerado
Resultados de devolución:
- Buffer, devolve o número aleatorio xerado
simpleRandomBytes
Xera números aleatorios de baixa intensidade dun tamaño especificado mediante un algoritmo rápido
1static Buffer crypto.simpleRandomBytes(Integer size = 16) async;
Parámetros de chamada:
- size: Número enteiro, especifica o tamaño do número aleatorio xerado
Resultados de devolución:
- Buffer, devolve o número aleatorio xerado
pseudoRandomBytes
Xera números pseudoaleatorios de tamaño especificado, utilizando o xerador de entropía
1static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;
Parámetros de chamada:
- size: Número enteiro, especifica o tamaño do número aleatorio xerado
Resultados de devolución:
- Buffer, devolve o número aleatorio xerado
randomFill
Use números aleatorios para cubrir o especificadoBuffer, usando o xerador havege
1
2
3static Buffer crypto.randomFill(Buffer buffer,
Integer offset = 0,
Integer size = -1) async;
Parámetros de chamada:
- buffer:Buffer, especifique o xeradoBuffer
- offset: Número enteiro, especifica a compensación inicial, o valor predeterminado é 0
- size: Enteiro, especifica o tamaño do número aleatorio xerado, o valor predeterminado é buffer.length - offset
Resultados de devolución:
- Buffer, devolve o número aleatorio xerado
randomArt
Xera unha imaxe de carácter visual dos datos dados
1
2
3static String crypto.randomArt(Buffer data,
String title,
Integer size = 8);
Parámetros de chamada:
- data:Buffer, especifique os datos que se van mostrar
- title: Cadea, especifica o título da imaxe do carácter. Os caracteres de varios bytes provocarán erros de ancho.
- size: Número enteiro, tamaño da imaxe do carácter
Resultados de devolución:
- String, devolve a imaxe de cadea visual xerada
generateKey
Xera unha clave privada RSA
1static PKey crypto.generateKey(Integer size) async;
Parámetros de chamada:
- size: Enteiro, especifica a lonxitude da clave RSA, en bits
Resultados de devolución:
- PKey, devolve un obxecto que contén a clave privada xerada
Xera unha clave privada de curva elíptica
1static PKey crypto.generateKey(String curve = "secp521r1") async;
Parámetros de chamada:
- curve: Cadea, especifica a curva elíptica predefinida, o valor predeterminado é 'secp256r1'
Resultados de devolución:
- PKey, devolve un obxecto que contén a clave privada xerada
curva As curvas opcionais inclúen curvas NIST e alias como segue:
curva | 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" |
Outras curvas compatibles inclúen: "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1" "BLS12381_G1" "BLS123"
pbkdf1
Xera a clave binaria necesaria baseándose no contrasinal de texto plano baseado en pbkdf1
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Parámetros de chamada:
- password:Buffer, especifique o contrasinal a utilizar
- salt:Buffer, especifique o sal empregado por hmac
- iterations: Número enteiro, especifique o número de iteracións
- size: Número enteiro, especifique o tamaño da clave
- algo: Número enteiro, especifique ohashalgoritmo, verhashmódulo
Resultados de devolución:
- Buffer, devolve a clave binaria xerada
Xera a clave binaria necesaria baseándose no contrasinal de texto plano baseado en pbkdf1
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Parámetros de chamada:
- password:Buffer, especifique o contrasinal a utilizar
- salt:Buffer, especifique o sal empregado por hmac
- iterations: Número enteiro, especifique o número de iteracións
- size: Número enteiro, especifique o tamaño da clave
- algoName: Cadea, especifica ohashalgoritmo, verhashmódulo
Resultados de devolución:
- Buffer, devolve a clave binaria xerada
pbkdf2
Xera a clave binaria requirida baseándose no contrasinal de texto plano segundo rfc2898
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Parámetros de chamada:
- password:Buffer, especifique o contrasinal a utilizar
- salt:Buffer, especifique o sal empregado por hmac
- iterations: Número enteiro, especifique o número de iteracións
- size: Número enteiro, especifique o tamaño da clave
- algo: Número enteiro, especifique ohashalgoritmo, verhashmódulo
Resultados de devolución:
- Buffer, devolve a clave binaria xerada
Xera a clave binaria requirida baseándose no contrasinal de texto plano segundo rfc2898
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Parámetros de chamada:
- password:Buffer, especifique o contrasinal a utilizar
- salt:Buffer, especifique o sal empregado por hmac
- iterations: Número enteiro, especifique o número de iteracións
- size: Número enteiro, especifique o tamaño da clave
- algoName: Cadea, especifica ohashalgoritmo, verhashmódulo
Resultados de devolución:
- Buffer, devolve a clave binaria xerada
getHashes
Obtén soporte para módulos criptográficoshash(Resumo) Algoritmos, como 'md5', 'sha224'
1static Array crypto.getHashes();
Resultados de devolución:
- Array, devolve fibjs compatibleshashmatriz de algoritmos
constante
AES
Especifique o algoritmo de cifrado simétrico AES, admite claves de 128, 192, 256 bits, o modo de traballo de cifrado de bloques admite ECB, CBC, CFB128, CTR, GCM, CCM, XTS
1const crypto.AES = 1;
DES
Especifica o algoritmo de cifrado simétrico DES, admite clave de 64 bits e o modo de traballo de cifrado en bloque admite ECB, CBC
1const crypto.DES = 2;
DES_EDE3
Especifique o algoritmo de cifrado simétrico DES-EDE3, admite clave de 192 bits, o modo de traballo de cifrado en bloque admite ECB, CBC
1const crypto.DES_EDE3 = 3;
CAMELLIA
Especifique o algoritmo de cifrado simétrico CAMELLIA, admite claves de 128, 192, 256 bits, o modo de traballo de cifrado de bloques admite ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.CAMELLIA = 4;
ARIA
Especifique o algoritmo de cifrado simétrico ARIA, admite claves de 128, 192, 256 bits, o modo de traballo de cifrado de bloques admite ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.ARIA = 5;
CHACHA20
Especifique o algoritmo de cifrado simétrico CHACHA20, admite clave de 256 bits e o modo de traballo de cifrado en bloque admite POLY1305
1const crypto.CHACHA20 = 6;
SM4
Especifique o algoritmo de cifrado simétrico SM4, o modo de traballo de cifrado en bloque admite ECB, CBC
1const crypto.SM4 = 7;
ECB
Especifique o modo de traballo de cifrado en bloque para admitir ECB
1const crypto.ECB = 1;
CBC
Especifique o modo de traballo de cifrado de bloques para admitir CBC
1const crypto.CBC = 2;
CFB64
Especifique o modo de traballo de cifrado de bloques para admitir CFB64
1const crypto.CFB64 = 3;
CFB128
Especifique o modo de traballo de cifrado de bloques para admitir CFB128
1const crypto.CFB128 = 4;
OFB
Especifique o modo de traballo de cifrado de bloques para admitir OFB
1const crypto.OFB = 5;
CTR
Especifique o modo de traballo de cifrado de bloques para admitir CTR
1const crypto.CTR = 6;
GCM
Especifique o modo de traballo de cifrado de bloques para admitir GCM
1const crypto.GCM = 7;
STREAM
Especifique o modo de cifrado de fluxo
1const crypto.STREAM = 8;
CCM
Especifique o modo de traballo de cifrado de bloques para admitir CCM
1const crypto.CCM = 9;
XTS
Especifique o modo de traballo de cifrado de bloques para admitir XTS
1const crypto.XTS = 10;
POLY1305
Especifique o modo de traballo de cifrado de bloques para admitir POLY1305
1const crypto.POLY1305 = 11;
PKCS7
Especifique o modo de recheo como PKCS7
1const crypto.PKCS7 = 0;
ONE_AND_ZEROS
Especifica o modo de recheo como ONE_AND_ZEROS
1const crypto.ONE_AND_ZEROS = 1;
ZEROS_AND_LEN
Especifica o modo de recheo como ZEROS_AND_LEN
1const crypto.ZEROS_AND_LEN = 2;
ZEROS
Especifique o modo de recheo como CERO
1const crypto.ZEROS = 3;
NOPADDING
Especifique o modo de recheo como NOPAADDING
1const crypto.NOPADDING = 4;