← Back to list

🔑 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…

Carolina Utsch · 2025-05-27 16:21 · 0 claps · 1.3 min read
#senhas #rsa
Open on Medium ↗
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: bcrypt ou argon2.
  • 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