🔑 Criptografia de Senhas. — Part2 Codando
Armazenar senhas em texto puro é um risco gravíssimo. A solução? Funções de hash como bcrypt, PBKDF2 ou Argon2, que convertem senhas em…
Wiki topics:
🧘 · Spirituality
🔑 Criptografia de Senhas. — Part2 Codando
Armazenar senhas em texto puro é um risco gravíssimo. A solução? Funções de hash como bcrypt, PBKDF2 ou Argon2, que convertem senhas em strings irreversíveis.
🔐 Criptografia de Senhas (Hash)
Por que usar Salt?
Jamais armazene senhas em texto plano. Use hashing com salting, tornando praticamente impossível reverter uma senha mesmo em caso de vazamento.
- Recomendado:
bcryptouargon2. - SHA256 sozinho não é recomendado para senhas por ser rápido (facilita ataques de força bruta).
npm install bcrypt crypto
const bcrypt = require('bcrypt');
const saltRounds = 10;
async function hashPassword(password) {
const salt = await bcrypt.genSalt(saltRounds);
const hash = await bcrypt.hash(password, salt);
return hash;
}
async function checkPassword(password, hash) {
return await bcrypt.compare(password, hash);
}
🔒 HTTPS: Criptografia em Trânsito
O HTTPS (HyperText Transfer Protocol Secure) usa TLS/SSL para criptografar a comunicação entre cliente e servidor, evitando ataques como Man-in-the-Middle (MITM).
Como Funciona?
- O servidor possui um certificado SSL/TLS (emitido por autoridades como Let’s Encrypt).
- Os dados são criptografados usando algoritmos como AES (Advanced Encryption Standard).
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('server-key.pem'),
cert: fs.readFileSync('server-cert.pem')
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Conexão segura com HTTPS!');
}).listen(443);
🔑 Criptografia de Dados Sensíveis (AES, RSA, etc.)
Além de senhas e HTTPS, podemos criptografar dados no banco ou em arquivos usando:
//AES (Simétrica) – Mais rápida, mesma chave
const crypto = require('crypto');
const algorithm = 'aes-256-cbc';
const key = crypto.randomBytes(32);
const iv = crypto.randomBytes(16);
function encrypt(text) {
let cipher = crypto.createCipheriv(algorithm, key, iv);
let encrypted = cipher.update(text, 'utf8', 'hex');
encrypted += cipher.final('hex');
return encrypted;
}
function decrypt(encryptedText) {
let decipher = crypto.createDecipheriv(algorithm, key, iv);
let decrypted = decipher.update(encryptedText, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return decrypted;
}
//RSA (Assimétrica) – Chave pública/privada
const { generateKeyPairSync, publicEncrypt, privateDecrypt } = require('crypto');
const { publicKey, privateKey } = generateKeyPairSync('rsa', {
modulusLength: 2048,
});
const encryptedData = publicEncrypt(publicKey, Buffer.from('Dado secreto'));
const decryptedData = privateDecrypt(privateKey, encryptedData);
console.log(decryptedData.toString()); // 'Dado secreto' 메타데이터
- post_id
- d451a09f454d
- slug
- criptografia-de-senhas-part2-codando-d451a09f454d
- url
- https://medium.com/@carolinarodriguesutsch/criptografia-de-senhas-part2-codando-d451a09f454d
- canonical_url
- https://medium.com/@carolinarodriguesutsch/criptografia-de-senhas-part2-codando-d451a09f454d
- author_url
- https://medium.com/@carolinarodriguesutsch
- status
- ok
- fetched_at
- 2026-07-19 17:23:31