Encrypth
Encrypth — это простой Ruby gem для безопасного архивирования и шифрования файлов с помощью AES-256-GCM. Gem был создан в качестве учебного проекта, и в дальнейшем можно ожидать расширение функционала.
Что делает
- создает зашифрованный tar-архив из файлов и директорий
- использует надежный режим шифрования AES-256-GCM
- генерирует ключ по паролю через PBKDF2-HMAC-SHA256
- сохраняет соль отдельно в файле
archive.salt - извлекает и расшифровывает содержимое обратно в указанную директорию
Установка
bundle install
Использование CLI
Синтаксис:
ruby lib/encrypth.rb <archive> <-e|-d> <...files|destination>
Шифрование
ruby lib/encrypth.rb secret.enc -e file1.txt folder2 file3.jpg
secret.enc— имя выходного зашифрованного архива-e— флаг шифрования- перечислите файлы и/или директории для архивации
- пароль вводится скрыто
- создается файл соли
secret.enc.salt
Дешифрование
ruby lib/encrypth.rb secret.enc -d output_folder
secret.enc— существующий зашифрованный архив-d— флаг дешифрованияoutput_folder— папка для извлечения файлов- если папка не указана, используется текущая директория
API
Encrypth предоставляет базовый API для шифрования и дешифрования данных:
Encrypth.generate_key— создает случайный 32-байтовый ключEncrypth.from_password(password, salt = nil)— создает ключ из пароля и солиEncrypth.new(key).encrypt(data)— шифрует строкуEncrypth.new(key).decrypt(encrypted_string)— расшифровывает строку
Структура проекта
lib/encrypth.rb— точка входаlib/encrypth/cli.rb— CLI-интерфейсlib/encrypth/cipher.rb— шифрование AES-256-GCM и PBKDF2lib/encrypth/archiver.rb— создание и извлечение tar-архиваdemo/encrypthdemo.rb— демонстрация базового шифрованияtest/encrypth_test.rb— набор тестов на Minitest
Лицензия
Проект распространяется под лицензией MIT.