Ответ
Это три принципиально разных процесса преобразования данных.
Хеширование — это односторонняя (необратимая) функция, которая преобразует произвольные данные в строку фиксированной длины (хеш). Основное назначение — проверка целостности данных и безопасное хранение паролей. По хешу нельзя восстановить исходные данные.
// Пример хеширования пароля в PHP
$hash = password_hash('myPassword123', PASSWORD_BCRYPT);
// Проверка пароля
$isValid = password_verify('myPassword123', $hash); // true
Кодирование (например, Base64, URL-encoding) — это обратимое преобразование данных в другой формат для удобства передачи или хранения. Оно не предназначено для обеспечения конфиденциальности.
$encoded = base64_encode('Hello World'); // SGVsbG8gV29ybGQ=
$decoded = base64_decode($encoded); // Hello World
Шифрование — это обратимое криптографическое преобразование данных с использованием секретного ключа. Его цель — обеспечение конфиденциальности. Для расшифровки необходим корректный ключ.
// Пример симметричного шифрования (AES) в PHP
$key = openssl_random_pseudo_bytes(32); // 256-битный ключ
$iv = openssl_random_pseudo_bytes(16); // Вектор инициализации
$ciphertext = openssl_encrypt('Sensitive Data', 'aes-256-cbc', $key, 0, $iv);
$plaintext = openssl_decrypt($ciphertext, 'aes-256-cbc', $key, 0, $iv);
Кратко:
- Хеш — для проверки (пароль, целостность файла). Необратим.
- Кодирование — для изменения формата (передача в URL, JSON). Обратимо без ключа.
- Шифрование — для секретности (передача платежных данных). Обратимо только с ключом.