O módulo de criptografia Node.js agiliza o processo de execução de operações criptográficas. Veja como usá-lo.

A criptografia é a prática de proteger a comunicação e os dados, convertendo-os em formatos que somente as partes autorizadas podem decifrar.

O Node.js cripto module é um módulo interno que fornece funcionalidade criptográfica para aplicativos Node.js. Ele oferece uma variedade de recursos criptográficos, incluindo criptografia, descriptografia, hashing, assinaturas digitais, geração segura de números aleatórios e muito mais.

Aqui você explorará os vários aplicativos do módulo criptográfico Node.js e como usá-los para proteger seus aplicativos.

Hash

Hashing é uma técnica criptográfica unidirecional que você pode usar para transformar uma determinada chave ou string em uma saída de tamanho fixo conhecida como hash ou resumo.

Hashing é uma função unidirecional, o que significa que, quando você faz o hash de uma chave ou string, não pode obter o valor original do hash gerado.

O módulo de criptografia Node.js oferece suporte a várias funções de hash, como SHA-256, SHA-512, MD5 e muito mais.

instagram viewer

Você pode fazer hash de dados usando o módulo de criptografia criarHash método, que usa o algoritmo de hash como um argumento. O método retorna um Cerquilha objeto, que você pode usar para fazer o hash dos dados usando o atualizar e digerir métodos.

Por exemplo:

const cripto = exigir('cripto');

const dados = "senha";

//criando objeto hash
const hashAlgo = crypto.createHash('sha256')

// passando os dados para serem hash
hashAlgo.update (dados);

// Criando o hash no formato necessário
const hash = hashAlgo.digest('hex');

console.registro(`Hash: ${hash}`);

No exemplo acima, o módulo de criptografia criarHash criou um objeto de hash com o sha256 algoritmo de hash. O atualizar O método no objeto de hash pega os dados de entrada e faz o hash. Então o digerir O método usa um parâmetro de codificação, especificando o formato do valor de hash de saída e retorna o hash no formato especificado (hexadecimal).

O hashing é útil para verificar a integridade dos dados, armazenamento de senhas, assinaturas digitais e muito mais.

Gerando Dados Aleatórios

Dados aleatórios criptograficamente seguros são frequentemente necessários em criptografia, jogos e testes para vários casos de uso.

Na criptografia, você pode usar dados aleatórios para gerar chaves, sais e vetores de inicialização para algoritmos de criptografia e descriptografia.

Nos jogos, você pode usar dados aleatórios para gerar níveis de jogo, personagens, itens e muito mais para evitar trapaças e garantir que o jogo não seja previsível.

Nos testes, você pode usá-lo para simular cenários do mundo real e casos extremos.

Você pode gerar dados aleatórios usando o módulo de criptografia Node.js bytes aleatórios método. Este método recebe um número como argumento e retorna um buffer de bytes aleatórios.

Esse número representa o tamanho dos bytes que o método irá gerar. No entanto, o número não deve ser maior do que 2³¹ - 1 (2147483647), que é o valor máximo que pode ser representado por um inteiro com sinal de 32 bits.

Por exemplo:

const cripto = exigir("cripto");

// cria bytes aleatórios
const randomBytes = cripto.randomBytes(32);

//converte para hexadecimal
const randomString = randomBytes.toString("hex");

console.log (randomString); //registra uma string aleatória no console

O bloco de código acima gera e registra uma string aleatória de 64 caracteres hexadecimais (32 bytes) no console.

A geração de dados aleatórios criptograficamente seguros é importante porque garante que os dados aleatórios não sejam previsíveis e que os invasores não possam manipulá-los ou adivinhá-los.

Criptografia e Descriptografia em Node.js

Criptografia é o processo de transformar texto simples em uma forma ilegível (texto cifrado) usando um algoritmo de criptografia e uma chave secreta.

A descriptografia é o inverso da criptografia. É o processo de converter o texto cifrado de volta em texto simples usando o mesmo algoritmo de criptografia e chave.

O módulo de criptografia Node.js fornece suporte para vários algoritmos de criptografia e descriptografia, incluindo AES (Padrão de Criptografia Avançado), DES (Padrão de Criptografia de Dados) e RSA (Rivest-Shamir-Adleman).

Como criptografar dados no Node.js usando o módulo de criptografia

Você pode criptografar dados usando o crypto.createCipheriv() método, que usa o algoritmo de criptografia, a chave secreta e um vetor de inicialização como entrada. A chave secreta depende do algoritmo de criptografia que você está usando. Por exemplo, para o algoritmo aes-256 em hemograma completo modo, o comprimento da chave deve ser de 32 bytes.

O método retorna um Cifra objeto, que você pode usar para criptografar os dados usando o atualizar() e final() métodos. Os dados criptografados geralmente são representados como uma string hexadecimal ou um buffer.

Por exemplo:

const cripto = exigir("cripto");

// Gera uma chave secreta para criptografia e descriptografia.
const secretKey = crypto.randomBytes(32);

// Gera um vetor de inicialização
const iv = crypto.randomBytes(16);

// dados a serem criptografados
const texto simples = "Esta é uma mensagem secreta";

// cria objeto de cifra
const cipher = crypto.createCipheriv("aes-256-cbc", secretKey, iv);

// criptografa os dados
deixar criptografadoText = cipher.update (plainText, "utf-8", "hex");

// finaliza a criptografia
Textocriptado += cipher.final("hex");

console.log (encryptedText);

O exemplo acima demonstra como você pode criptografar texto simples usando aes-256 no modo CBC usando o módulo de criptografia. Ele gera uma chave secreta e um vetor de inicialização usando o crypto.randomBytes método. Em seguida, cria um objeto de cifra usando o crypto.createCipheriv método e criptografa a mensagem de texto sem formatação usando o método cipher.update e cipher.final métodos.

O resultado é uma string hexadecimal da mensagem criptografada, que você pode descriptografar usando a mesma chave secreta e IV.

Como descriptografar dados no Node.js usando o módulo de criptografia

Você pode descriptografar dados criptografados usando o módulo de criptografia crypto.createDecipheriv() método, que usa o algoritmo de descriptografia, chave secreta e um vetor de inicialização como entrada. O método retorna um Decifrar objeto, que você pode usar para descriptografar os dados usando o Decifrar.atualizar() e Decifrar.final() métodos.

Por exemplo:

// cria o objeto Decipher
const decifrar = crypto.createDecipheriv("aes-256-cbc", secretKey, iv);

// descriptografa os dados
deixar decryptedText = decipher.update (encryptedText, "hex", "utf-8");

// finaliza a decodificação
descriptografado += decifrar.final("utf-8");

console.log (decryptedText); // Esta é uma mensagem secreta

O exemplo acima demonstra como você pode descriptografar dados criptografados usando o mesmo algoritmo, chave secreta e vetor de inicialização com os quais você os criptografou.

Ele cria um objeto Decipher usando o crypto.createDecipheriv método. Em seguida, ele descriptografa os dados usando o decifrar.atualizar método, que usa os dados, a codificação de entrada e a codificação de saída como argumentos. Finalmente, termina o processo de descriptografia usando o decifrar.final método. Chamar esse método garante que o objeto Decipher possa mais ser usado para descriptografar dados. O resultado é uma string de texto simples.

Criptografia e descriptografia são cruciais para proteger dados confidenciais e manter sua confidencialidade. Eles têm vários aplicativos do mundo real em comércio eletrônico, serviços bancários online, armazenamento de dados e muito mais.

Outras aplicações do módulo de criptografia Node.js

Além de hashing, geração de dados aleatórios criptograficamente seguros e criptografia e descriptografia, você também pode usar o Módulo de criptografia Node.js para assinar e verificar assinaturas digitais, que ajudam a verificar a autenticidade e a integridade das assinaturas digitais documentos. Além disso, você pode usar o módulo de criptografia para proteger fluxos de transmissão de dados para evitar adulteração de dados e espionagem durante a transmissão.