módulocripto
crypto
El módulo es fibjs
un módulo de algoritmo de cifrado incorporado. Proporciona cifrado simétrico, cifrado asimétrico, algoritmo de resumen, generador de números aleatorios criptográficos y otras funciones. Antes de su uso, require('crypto')
el módulo debe cargarse mediante .
En crypto
el módulo hay muchos objetos disponibles, como por ejemplo:
PKey
: Objeto de algoritmo de cifrado asimétricoX509Cert
: Objeto utilizado para manipular certificados X.509Cipher
: Objeto utilizado para implementar cifrado simétricoDigest
: Objeto utilizado para implementar el algoritmo de resumen.
Antes de utilizar el algoritmo de cifrado, debe crear un objeto clave. Por ejemplo, el siguiente AES
ejemplo crea un objeto clave:
1
2const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
A continuación, utilice Cipher
el objeto para cifrar el texto sin formato:
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
En el ejemplo anterior, se crea un objeto AES
cifrado , el texto sin formato se cifra utilizando el método y se devuelve el resultado del cifrado.Cipher
encrypt
Además de los algoritmos de cifrado simétrico, crypto
el módulo también puede admitir algoritmos de cifrado asimétrico y algoritmos de resumen. Por ejemplo, el siguiente ejemplo es código que utiliza PKey
y Digest
objetos para implementar el 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
En el ejemplo anterior, primero se lee un archivo de clave privada y se preparan los datos de entrada. Luego, Digest
se crea un objeto SHA256 y update
los datos se agregan al cálculo Hash utilizando el método. Una vez completado el cálculo, utilice privateKey.sign
el método para firmar y generar el resultado de la firma.
En resumen, crypto
el módulo proporciona una variedad de algoritmos de cifrado, algoritmos de resumen y objetos relacionados, que pueden ayudarnos a lograr diversos requisitos de seguridad, como cifrado simétrico y asimétrico, firmas digitales y verificación de cifrado.
objeto
Cipher
1Cipher crypto.Cipher;
PKey
1PKey crypto.PKey;
ECKey
1ECKey crypto.ECKey;
BlsKey
1BlsKey crypto.BlsKey;
X509Cert
X509CertConstructor, verX509Cert
1X509Cert crypto.X509Cert;
X509Crl
X509CrlConstructor, verX509Crl
1X509Crl crypto.X509Crl;
X509Req
X509ReqConstructor, verX509Req
1X509Req crypto.X509Req;
función estática
createHash
Crea un objeto de resumen de información basado en el nombre del algoritmo dado.
1static Digest crypto.createHash(String algo);
Parámetros de llamada:
- algo: Cadena, que especifica el algoritmo del objeto de resumen de información.
Resultados de devolución:
- Digest, devuelve el objeto de resumen de información
createHmac
Crea un objeto de resumen de información de hmac basado en el nombre del algoritmo dado
1
2static Digest crypto.createHmac(String algo,
Buffer key);
Parámetros de llamada:
- algo: Cadena, que especifica el algoritmo del objeto de resumen de información.
- key:Buffer, clave de firma binaria
Resultados de devolución:
- Digest, devuelve el objeto de resumen de información
loadCert
Cargue un certificado en formato CRT/PEM/DER, que se puede llamar varias veces
1static X509Cert crypto.loadCert(String filename);
Parámetros de llamada:
- filename: Cadena, nombre del archivo del certificado
Resultados de devolución:
- X509Cert, devuelve un objeto que contiene el certificado
loadCrl
Cargue un certificado de revocación en formato PEM/DER, que se puede llamar varias veces
1static X509Crl crypto.loadCrl(String filename);
Parámetros de llamada:
- filename: Cadena, nombre del archivo del certificado de revocación
Resultados de devolución:
- X509Crl, devuelve un objeto que contiene el certificado revocado
loadReq
Cargue una solicitud de certificado en formato PEM/DER, que se puede llamar varias veces
1static X509Req crypto.loadReq(String filename);
Parámetros de llamada:
- filename: Cadena, nombre del archivo de solicitud de certificado
Resultados de devolución:
- X509Req, devuelve un objeto que contiene el certificado solicitado
loadPKey
Cargue una clave pública o privada asimétrica en formato CRT/PEM/DER
1static PKey crypto.loadPKey(String filename);
Parámetros de llamada:
- filename: Cadena, nombre de archivo de clave pública o clave privada
Resultados de devolución:
randomBytes
Genere números aleatorios de tamaño específico usando el generador havege
1static Buffer crypto.randomBytes(Integer size = 16) async;
Parámetros de llamada:
- size: Entero, especifica el tamaño del número aleatorio generado
Resultados de devolución:
- Buffer, devuelve el número aleatorio generado
simpleRandomBytes
Genere números aleatorios de baja intensidad de un tamaño específico, utilizando un algoritmo rápido
1static Buffer crypto.simpleRandomBytes(Integer size = 16) async;
Parámetros de llamada:
- size: Entero, especifica el tamaño del número aleatorio generado
Resultados de devolución:
- Buffer, devuelve el número aleatorio generado
pseudoRandomBytes
Genere números pseudoaleatorios de tamaño específico, utilizando el generador de entropía
1static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;
Parámetros de llamada:
- size: Entero, especifica el tamaño del número aleatorio generado
Resultados de devolución:
- Buffer, devuelve el número aleatorio generado
randomFill
Utilice números aleatorios para completar lo especificado.Buffer, usando el generador havege
1
2
3static Buffer crypto.randomFill(Buffer buffer,
Integer offset = 0,
Integer size = -1) async;
Parámetros de llamada:
- buffer:Buffer, especifique el generadoBuffer
- offset: Entero, especifica el desplazamiento inicial, el valor predeterminado es 0
- size: Entero, especifica el tamaño del número aleatorio generado, el valor predeterminado es buffer.length - offset
Resultados de devolución:
- Buffer, devuelve el número aleatorio generado
randomArt
Genera una imagen de carácter visual de los datos dados.
1
2
3static String crypto.randomArt(Buffer data,
String title,
Integer size = 8);
Parámetros de llamada:
- data:Buffer, especifique los datos que se mostrarán
- title: Cadena, especifica el título de la imagen del personaje. Los caracteres de varios bytes provocarán errores de ancho.
- size: Entero, tamaño de imagen de carácter
Resultados de devolución:
- String, devuelve la imagen de cadena visual generada
generateKey
Generar una clave privada RSA
1static PKey crypto.generateKey(Integer size) async;
Parámetros de llamada:
- size: Entero, especifica la longitud de la clave RSA, en bits
Resultados de devolución:
- PKey, devuelve un objeto que contiene la clave privada generada
Generar una clave privada de curva elíptica
1static PKey crypto.generateKey(String curve = "secp521r1") async;
Parámetros de llamada:
- curve: Cadena, especifica la curva elíptica preestablecida, el valor predeterminado es 'secp256r1'
Resultados de devolución:
- PKey, devuelve un objeto que contiene la clave privada generada
curva Las curvas opcionales incluyen curvas NIST y alias de la siguiente manera:
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' |
Otras curvas admitidas incluyen: "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1", "BLS12381_G2"
pbkdf1
Genere la clave binaria requerida basada en la contraseña de texto sin formato basada en pbkdf1
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Parámetros de llamada:
- password:Buffer, especifique la contraseña a utilizar
- salt:Buffer, especifique la sal utilizada por hmac
- iterations: Entero, especifica el número de iteraciones.
- size: Entero, especifique el tamaño de la clave
- algo: Entero, especifique elhashalgoritmo, verhashmódulo
Resultados de devolución:
- Buffer, devuelve la clave binaria generada
Genere la clave binaria requerida basada en la contraseña de texto sin formato basada en pbkdf1
1
2
3
4
5static Buffer crypto.pbkdf1(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Parámetros de llamada:
- password:Buffer, especifique la contraseña a utilizar
- salt:Buffer, especifique la sal utilizada por hmac
- iterations: Entero, especifica el número de iteraciones.
- size: Entero, especifique el tamaño de la clave
- algoName: Cadena, especifica elhashalgoritmo, verhashmódulo
Resultados de devolución:
- Buffer, devuelve la clave binaria generada
pbkdf2
Genere la clave binaria requerida basada en la contraseña de texto sin formato según rfc2898
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
Integer algo) async;
Parámetros de llamada:
- password:Buffer, especifique la contraseña a utilizar
- salt:Buffer, especifique la sal utilizada por hmac
- iterations: Entero, especifica el número de iteraciones.
- size: Entero, especifique el tamaño de la clave
- algo: Entero, especifique elhashalgoritmo, verhashmódulo
Resultados de devolución:
- Buffer, devuelve la clave binaria generada
Genere la clave binaria requerida basada en la contraseña de texto sin formato según rfc2898
1
2
3
4
5static Buffer crypto.pbkdf2(Buffer password,
Buffer salt,
Integer iterations,
Integer size,
String algoName) async;
Parámetros de llamada:
- password:Buffer, especifique la contraseña a utilizar
- salt:Buffer, especifique la sal utilizada por hmac
- iterations: Entero, especifica el número de iteraciones.
- size: Entero, especifique el tamaño de la clave
- algoName: Cadena, especifica elhashalgoritmo, verhashmódulo
Resultados de devolución:
- Buffer, devuelve la clave binaria generada
getHashes
Obtenga soporte para el módulo criptográficohash(Resumen) Algoritmos, como 'md5', 'sha224'
1static Array crypto.getHashes();
Resultados de devolución:
- Array, devuelve fibjs compatibleshashmatriz de algoritmos
constante
AES
Especifique el algoritmo de cifrado simétrico AES, admite claves de 128, 192 y 256 bits, el modo de trabajo de cifrado en bloque admite ECB, CBC, CFB128, CTR, GCM, CCM, XTS
1const crypto.AES = 1;
DES
Especifica el algoritmo de cifrado simétrico DES, admite claves de 64 bits y el modo de trabajo de cifrado en bloque admite ECB, CBC
1const crypto.DES = 2;
DES_EDE3
Especifique el algoritmo de cifrado simétrico DES-EDE3, admite clave de 192 bits, el modo de trabajo de cifrado en bloque admite ECB, CBC
1const crypto.DES_EDE3 = 3;
CAMELLIA
Especifique el algoritmo de cifrado simétrico CAMELLIA, admite claves de 128, 192 y 256 bits, el modo de trabajo de cifrado en bloque admite ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.CAMELLIA = 4;
ARIA
Especifique el algoritmo de cifrado simétrico ARIA, admite claves de 128, 192 y 256 bits, el modo de trabajo de cifrado en bloque admite ECB, CBC, CFB128, CTR, GCM, CCM
1const crypto.ARIA = 5;
CHACHA20
Especifique el algoritmo de cifrado simétrico CHACHA20, admita clave de 256 bits y el modo de trabajo de cifrado en bloque admita POLY1305.
1const crypto.CHACHA20 = 6;
SM4
Especifique el algoritmo de cifrado simétrico SM4, el modo de trabajo de cifrado en bloque admite ECB, CBC
1const crypto.SM4 = 7;
ECB
Especifique el modo de trabajo de cifrado en bloque para admitir el BCE
1const crypto.ECB = 1;
CBC
Especifique el modo de trabajo de cifrado en bloque para admitir CBC
1const crypto.CBC = 2;
CFB64
Especifique el modo de trabajo del cifrado de bloques para admitir CFB64
1const crypto.CFB64 = 3;
CFB128
Especifique el modo de trabajo de cifrado de bloques para admitir CFB128
1const crypto.CFB128 = 4;
OFB
Especifique el modo de trabajo de cifrado en bloque para admitir OFB
1const crypto.OFB = 5;
CTR
Especifique el modo de trabajo de cifrado en bloque para admitir CTR
1const crypto.CTR = 6;
GCM
Especifique el modo de trabajo del cifrado de bloques para admitir GCM
1const crypto.GCM = 7;
STREAM
Especificar el modo de cifrado de flujo
1const crypto.STREAM = 8;
CCM
Especifique el modo de trabajo de cifrado en bloque para admitir CCM
1const crypto.CCM = 9;
XTS
Especifique el modo de trabajo de cifrado de bloques para admitir XTS
1const crypto.XTS = 10;
POLY1305
Especifique el modo de trabajo del cifrado de bloques para admitir POLY1305
1const crypto.POLY1305 = 11;
PKCS7
Especifique el modo de relleno como PKCS7
1const crypto.PKCS7 = 0;
ONE_AND_ZEROS
Especifique el modo de relleno como ONE_AND_ZEROS
1const crypto.ONE_AND_ZEROS = 1;
ZEROS_AND_LEN
Especifique el modo de relleno como ZEROS_AND_LEN
1const crypto.ZEROS_AND_LEN = 2;
ZEROS
Especificar el modo de llenado como CERO
1const crypto.ZEROS = 3;
NOPADDING
Especifique el modo de relleno como NOPADDING
1const crypto.NOPADDING = 4;