Вопрос проверяет понимание фундаментальных криптографических концепций.
Хэширование - одностороннее преобразование данных (без возможности восстановления), шифрование - двустороннее (с возможностью расшифровки). Хэши для проверки целостности, шифрование для конфиденциальности.
Хэширование:
Необратимая функция
Фиксированный размер вывода
Используется для:
Хранения паролей
Проверки целостности данных
Цифровых подписей
Примеры алгоритмов: SHA-256, MD5 (устарел)
Шифрование:
Обратимое преобразование
Требует ключа
Используется для:
Защиты конфиденциальных данных
Безопасной передачи информации
Примеры: AES, RSA
Пример хэширования в Java:
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] hash = digest.digest("password".getBytes());Пример шифрования (AES):
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encrypted = cipher.doFinal(plainText.getBytes());