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 и PBKDF2
  • lib/encrypth/archiver.rb — создание и извлечение tar-архива
  • demo/encrypthdemo.rb — демонстрация базового шифрования
  • test/encrypth_test.rb — набор тестов на Minitest

Лицензия

Проект распространяется под лицензией MIT.