Diferença entre o encryption e hashing

Está gostando? Compartilhe

Com o aumento da importância da segurança em aplicações de software, é cada vez mais comum a necessidade de se criptografar e/ou hashar dados sensíveis. Embora possam parecer conceitos semelhantes, há diferenças fundamentais entre o encrypter e o hasher. Neste artigo, vamos explorar essas diferenças e como implementá-las usando Node.js e Typescript.

O que é um Encrypter?

Encrypter é um processo que transforma um texto legível em um texto cifrado, para que possa ser enviado ou armazenado com mais segurança. A criptografia é usada para proteger informações confidenciais, como senhas ou informações financeiras, contra acesso não autorizado.

Existem muitos algoritmos de criptografia disponíveis, e um dos mais populares é o AES (Advanced Encryption Standard). Com o Node.js e o Typescript, podemos usar o pacote ‘crypto’ para implementar a criptografia AES. Aqui está um exemplo:

				
					import * as crypto from 'crypto';

const secretKey = 'chave-secreta-123';
const textToEncrypt = 'texto a ser criptografado';

const cipher = crypto.createCipher('aes-256-cbc', secretKey);
let encryptedText = cipher.update(textToEncrypt, 'utf8', 'hex');
encryptedText += cipher.final('hex');

console.log('Texto criptografado:', encryptedText);

				
			

Neste exemplo, estamos usando o algoritmo AES com uma chave secreta de 256 bits (ou seja, 32 caracteres) e o modo de operação CBC (Cipher Block Chaining). O texto legível é criptografado usando a função createCipher() do pacote ‘crypto’, que retorna uma instância do objeto Cipher. O método update() é usado para processar o texto a ser criptografado, e o método final() é usado para finalizar o processo de criptografia e obter o texto cifrado em formato hexadecimal.

O que é um Hasher?

Um hasher, por outro lado, é um processo que transforma um texto legível em um valor de hash, que é uma sequência de caracteres que representa a entrada original de forma não reversível. O valor de hash é geralmente usado para verificar a integridade dos dados, já que qualquer alteração na entrada original resultará em um valor de hash diferente.

Existem muitos algoritmos de hashing disponíveis, e um dos mais populares é o SHA (Secure Hash Algorithm). Com o Node.js e o Typescript, podemos usar o pacote ‘crypto’ para implementar o hashing SHA. Aqui está um exemplo:

				
					import * as crypto from 'crypto';

const textToHash = 'texto a ser hashado';

const hash = crypto.createHash('sha256');
hash.update(textToHash);
const hashedText = hash.digest('hex');

console.log('Valor de hash:', hashedText);

				
			

Neste exemplo, estamos usando o algoritmo SHA com 256 bits e a função createHash() do pacote ‘crypto’, que retorna uma instância do objeto Hash. O método update() é usado para processar o texto a ser hashado, e o método digest() é usado para obter o valor de hash em formato hexadecimal.

Diferenças entre Encrypter e Hasher

Embora o Encrypter e o Hasher sejam usados para proteger informações, eles têm finalidades diferentes. O Encrypter transforma um texto legível em um texto cifrado, enquanto o Hasher transforma um texto

legível em um valor de hash irreversível. Além disso, enquanto a criptografia pode ser desfeita usando a chave secreta correta, o hashing não pode ser desfeito, uma vez que o valor de hash não contém informações suficientes para recuperar a entrada original.

Por exemplo, quando armazenamos senhas em um banco de dados, não é seguro armazenar a senha em texto legível. Se um invasor acessar o banco de dados, ele terá acesso a todas as senhas em texto legível, o que pode causar danos significativos. Em vez disso, usamos um hasher para transformar a senha em um valor de hash, que é armazenado no banco de dados. Quando um usuário tenta fazer login, a senha fornecida é hashada e comparada com o valor de hash armazenado no banco de dados. Se os valores de hash coincidirem, a senha está correta e o login é permitido.

Por outro lado, a criptografia é usada para proteger informações confidenciais que precisam ser transmitidas ou armazenadas com segurança. Por exemplo, quando enviamos informações financeiras pela internet, usamos a criptografia para impedir que terceiros não autorizados acessem essas informações. A criptografia garante que apenas o destinatário correto possa acessar as informações, já que somente eles têm a chave secreta necessária para descriptografar o texto cifrado.

Conclusão

anto o Encrypter quanto o Hasher são importantes para a segurança de aplicações de software. Enquanto o Encrypter é usado para proteger informações confidenciais, o Hasher é usado para verificar a integridade dos dados. Com o Node.js e o Typescript, podemos implementar tanto a criptografia quanto o hashing usando o pacote ‘crypto’. É importante entender as diferenças entre esses dois conceitos para escolher o método certo para proteger suas informações.

Quer ficar atualizado sobre marketing ?

Assine a nossa newsletter.

Aproveite e Veja Também

DESCUBRA NESSE E-BOOK 5 ESTRATÉGIAS PARA VENDER MUITO NA SUA LOJA DROPSHIPPING.

Você Quer Impulsionar Seu Negócio?

Mande-nos uma mensagem que entramos em contato.

Desenvolvimento de Backend com Node.js, TypeScript, MongoDB e Docker: Práticas Avançadas com TDD, DDD, Clean Architecture e SOLID

DESCUBRA como desenvolver um Backend com Node.js, TypeScript, MongoDB e Docker utilizando práticas avançadas com TDD, DDD, Clean Architecture e SOLID.