Módulo módulo básico

modulecrypto

cryptoO módulo é fibjsun 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 cryptomódulo, hai moitos obxectos dispoñibles, como:

  • PKey: obxecto de algoritmo de cifrado asimétrico
  • X509Cert: Obxecto usado para manipular certificados X.509
  • Cipher: Obxecto usado para implementar o cifrado simétrico
  • Digest: 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 AESexemplo crea un obxecto clave:

1 2
const crypto = require('crypto'); const key = crypto.randomBytes(16); // generate a 16-byte random key

A continuación, use Ciphero obxecto para cifrar o texto plano:

1 2 3 4
const 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 AEScifrado , o texto plano cífrase mediante o método e devólvese o resultado da cifrado.Cipherencrypt

Ademais dos algoritmos de cifrado simétrico, cryptoo 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 PKeye Digestobxectos para implementar o cifrado SHA256:

1 2 3 4 5 6
const 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, Digestcréase un obxecto SHA256 e updateos datos engádense ao cálculo Hash mediante o método. Despois de completar o cálculo, use privateKey.signo método para asinar e emitir o resultado da sinatura.

En resumo, cryptoo 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

CipherConstrutor, verCipher

1
Cipher crypto.Cipher;

PKey

PKeyConstrutor, verPKey

1
PKey crypto.PKey;

ECKey

ECKeyConstrutor, verECKey

1
ECKey crypto.ECKey;

BlsKey

BlsKeyConstrutor, verBlsKey

1
BlsKey crypto.BlsKey;

X509Cert

X509CertConstrutor, verX509Cert

1
X509Cert crypto.X509Cert;

X509Crl

X509CrlConstrutor, verX509Crl

1
X509Crl crypto.X509Crl;

X509Req

X509ReqConstrutor, verX509Req

1
X509Req crypto.X509Req;

función estática

createHash

Crea un obxecto de resumo de información baseado no nome do algoritmo dado

1
static 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 2
static 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

1
static 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

1
static 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

1
static 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

1
static 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

1
static 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

1
static 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

1
static 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 3
static 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 3
static 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

1
static 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

1
static 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 5
static 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 5
static 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 5
static 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 5
static 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'

1
static 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

1
const 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

1
const 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

1
const 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

1
const 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

1
const 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

1
const crypto.CHACHA20 = 6;

SM4

Especifique o algoritmo de cifrado simétrico SM4, o modo de traballo de cifrado en bloque admite ECB, CBC

1
const crypto.SM4 = 7;

ECB

Especifique o modo de traballo de cifrado en bloque para admitir ECB

1
const crypto.ECB = 1;

CBC

Especifique o modo de traballo de cifrado de bloques para admitir CBC

1
const crypto.CBC = 2;

CFB64

Especifique o modo de traballo de cifrado de bloques para admitir CFB64

1
const crypto.CFB64 = 3;

CFB128

Especifique o modo de traballo de cifrado de bloques para admitir CFB128

1
const crypto.CFB128 = 4;

OFB

Especifique o modo de traballo de cifrado de bloques para admitir OFB

1
const crypto.OFB = 5;

CTR

Especifique o modo de traballo de cifrado de bloques para admitir CTR

1
const crypto.CTR = 6;

GCM

Especifique o modo de traballo de cifrado de bloques para admitir GCM

1
const crypto.GCM = 7;

STREAM

Especifique o modo de cifrado de fluxo

1
const crypto.STREAM = 8;

CCM

Especifique o modo de traballo de cifrado de bloques para admitir CCM

1
const crypto.CCM = 9;

XTS

Especifique o modo de traballo de cifrado de bloques para admitir XTS

1
const crypto.XTS = 10;

POLY1305

Especifique o modo de traballo de cifrado de bloques para admitir POLY1305

1
const crypto.POLY1305 = 11;

PKCS7

Especifique o modo de recheo como PKCS7

1
const crypto.PKCS7 = 0;

ONE_AND_ZEROS

Especifica o modo de recheo como ONE_AND_ZEROS

1
const crypto.ONE_AND_ZEROS = 1;

ZEROS_AND_LEN

Especifica o modo de recheo como ZEROS_AND_LEN

1
const crypto.ZEROS_AND_LEN = 2;

ZEROS

Especifique o modo de recheo como CERO

1
const crypto.ZEROS = 3;

NOPADDING

Especifique o modo de recheo como NOPAADDING

1
const crypto.NOPADDING = 4;