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.
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.