# Как происходит шифрование?

### 1️⃣ Основные типы шифрования

#### **1. Симметричное шифрование**

* Один ключ используется и для шифрования, и для дешифрования.
* Примеры алгоритмов: AES, DES, ChaCha20.
* Особенности:
  * Очень быстрое.
  * Проблема передачи ключа: нужно безопасно донести ключ до другой стороны.
* Применение:
  * Шифрование файлов, баз данных, соединений внутри закрытых систем.

#### **2. Асимметричное шифрование (с открытым и закрытым ключом)**

* Два ключа: публичный (открытый) и приватный (закрытый).
* Принцип:
  * Любой может зашифровать данные публичным ключом.
  * Только владелец приватного ключа может их расшифровать.
* Примеры алгоритмов: RSA, ECC.
* Применение:
  * Передача данных через интернет.
  * Цифровые подписи.
  * TLS/SSL (HTTPS).

***

### 2️⃣ Как это выглядит на практике

**Симметричное (AES)**:

1. Данные: `"Hello World"`
2. Ключ: `my_secret_key`
3. Алгоритм AES шифрует данные → результат: `6a2f1b9c...`
4. Чтобы прочитать → используем тот же ключ для дешифрования.

**Асимметричное (RSA)**:

1. У вас есть пара ключей: публичный и приватный.
2. Друг шифрует сообщение вашим публичным ключом → отправляет.
3. Вы расшифровываете приватным ключом → получаете исходное сообщение.

***

### 3️⃣ Дополнительно: хэширование (не шифрование, но часто рядом)

* Превращает данные в уникальную строку фиксированной длины.
* Односторонний процесс (не обратно): нельзя расшифровать.
* Примеры: SHA-256, bcrypt.
* Применение:
  * Хранение паролей.
  * Проверка целостности данных.

***

### 4️⃣ В реальном мире

* HTTPS — сочетание асимметричного (обмен ключами) и симметричного (шифрование самой передачи) шифрования.
* Банковские приложения используют AES для данных и RSA/ECC для обмена ключами.
* Пароли в базах обычно хранятся через хэш с солью.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/web/kak-proiskhodit-shifrovanie.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
