[Перевод] Простая и ужасающая история о шифровании
Это будет история об открытом ПО, доверии и ответственности.
Как-то раз мне понадобилось добавить в своё приложение на Ruby симметричное шифрование. Алгоритм AES показался мне хорошим выбором и я решил найти библиотеку шифрования с поддержкой этого алгоритма. Поскольку я писал на Ruby, то сделал то же самое, что сделал бы на моём месте практически каждый программист на Ruby — пошел в Google и написал запрос «ruby gem aes». Конечно же, Google первой строкой предложил мне gem, называющийся (вот неожиданность!) — «aes». Он был очень прост в использовании:
require 'aes'message = "Super secret message"key = "password"encrypted = AES.encrypt(message, key) # RZhMg/RzyTXK4QKOJDhGJg==$BYAvRONIsfKjX+uYiZ8TCsW7C2Ug9fH7cfRG9mbvx9o=decrypted = AES.decrypt(encrypted, key) # Super secret message
Если вы при расшифровке использовали неверный пароль, gem выбрасывал ошибку:
decrypted = AES.decrypt(encrypted, "Some other password") #=> aes.rb:76:in `final': bad decrypt (OpenSSL::Cipher::CipherError)
Ну, отлично. Что же могло пойти не так?
Читать дальше →
Задача и её решение
Как-то раз мне понадобилось добавить в своё приложение на Ruby симметричное шифрование. Алгоритм AES показался мне хорошим выбором и я решил найти библиотеку шифрования с поддержкой этого алгоритма. Поскольку я писал на Ruby, то сделал то же самое, что сделал бы на моём месте практически каждый программист на Ruby — пошел в Google и написал запрос «ruby gem aes». Конечно же, Google первой строкой предложил мне gem, называющийся (вот неожиданность!) — «aes». Он был очень прост в использовании:
require 'aes'message = "Super secret message"key = "password"encrypted = AES.encrypt(message, key) # RZhMg/RzyTXK4QKOJDhGJg==$BYAvRONIsfKjX+uYiZ8TCsW7C2Ug9fH7cfRG9mbvx9o=decrypted = AES.decrypt(encrypted, key) # Super secret message
Если вы при расшифровке использовали неверный пароль, gem выбрасывал ошибку:
decrypted = AES.decrypt(encrypted, "Some other password") #=> aes.rb:76:in `final': bad decrypt (OpenSSL::Cipher::CipherError)
Ну, отлично. Что же могло пойти не так?
Читать дальше →
Источник: Хабрахабр
Похожие новости
- Вредоносная атака на Laravel-Lang
- Двигатель, колёса и панель приборов: Из чего на самом деле состоит ваш сайт
- Meta 1 мая показала как они хранят ключи от ваших бэкапов WhatsApp. Разбираю архитектуру и сравниваю
- CyLab Security Academy: как Carnegie Mellon превратила CTF в полноценную обучающую платформу
- Обход блокировок внутри iOS-приложения: VLESS + Reality через sing-box, и грабли по дороге
- QNAME minimisation на практике: RFC 7816, реализация, грабли
- Двигатель внутреннего сгорания и PHP: Почему старые технологии не умирают
- Вы платите OpenAI $20 в месяц, а он зарабатывает на вас ещё $100 млн за полтора месяца. И это только начало
- Объявлены победители Workspace Digital Awards-2026
- Как бизнесу оценить готовность к аттестации по новому Приказу ФСТЭК № 117