Что такое симметричная криптография

Ответ

Симметричная криптография — это метод шифрования, где для зашифровки и расшифровки данных используется один и тот же ключ.

Особенности:

  • Высокая скорость работы (по сравнению с асимметричной)
  • Подходит для шифрования больших объемов данных
  • Требует безопасного обмена ключами между сторонами

Пример (AES в JavaScript):

const crypto = require('crypto');
const algorithm = 'aes-256-cbc';
const key = crypto.randomBytes(32); // 256-битный ключ
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(encrypted) {
  let decipher = crypto.createDecipheriv(algorithm, key, iv);
  let decrypted = decipher.update(encrypted, 'hex', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}

Используется в: HTTPS (для шифрования трафика), защите файлов, VPN.

Ответ 18+ 🔞

Давай разберёмся, что за зверь такой — симметричное шифрование. Представь, у тебя есть сундук с одним здоровенным замком. И ключ от этого замка — один, блядь, единственный и неповторимый. Чтобы сундук закрыть и открыть — нужен именно он. Вот это и есть симметричная криптография: один и тот же ключ и для шифрования, и для расшифровки. Просто, как три копейки, но с подвохом.

Чем оно, сука, примечательно:

  • Скорость, пиздец какая! Летит быстрее асимметричной, как угорелое. Для больших объёмов данных — самое то.
  • Объёмы хавает — хоть терабайты шифруй, не поперхнётся.
  • Но есть нюанс, ёпта! Этот самый ключ надо как-то безопасно передать тому, с кем общаешься. А это, блядь, целая история. Если ключ перехватят — всё, твои секреты на блюдечке, пиши пропало.

Вот тебе пример на JavaScript (AES), не трогай его, он святой:

const crypto = require('crypto');
const algorithm = 'aes-256-cbc';
const key = crypto.randomBytes(32); // 256-битный ключ
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(encrypted) {
  let decipher = crypto.createDecipheriv(algorithm, key, iv);
  let decrypted = decipher.update(encrypted, 'hex', 'utf8');
  decrypted += decipher.final('utf8');
  return decrypted;
}

Где эту хрень применяют? Да везде, блядь! Весь твой HTTPS-трафик, защита файлов на компе, эти все VPN — всё работает на симметричных шифрах. Быстро, надёжно, но ключи свои держи в ежовых рукавицах, а то будет мудацкая история.