Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/paragonie/halite
Инструменты шифрования/дешифрованияКриптографияАутентификация
GitHubparagonie/halite

halite

Высокоуровневый криптографический интерфейс на основе libsodium

РепозиторийСайт
1.2k9148 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Halite

Build Status Static Analysis Latest Stable Version Latest Unstable Version License Downloads Coverage Status

Halite — это высокоуровневый криптографический интерфейс, который полагается на libsodium для всех своих базовых криптографических операций.

Halite был создан Paragon Initiative Enterprises в рамках наших постоянных усилий по улучшению экосистемы и повышению безопасности и простоты внедрения криптографии в PHP.

Вы можете прочитать документацию Halite онлайн.

Halite выпускается под лицензией Mozilla Public License 2.0. Коммерческие лицензии доступны в Paragon Initiative Enterprises, если вы хотите расширить Halite, не распространяя свои производные работы на условиях MPL.

Если вас устраивают условия MPL-программного обеспечения для серверных веб-приложений, но вы хотели бы приобрести контракт на поддержку для своего приложения, использующего Halite, такие контракты также предлагаются Paragon Initiative Enterprises.

Важно: Более ранние версии Halite были доступны под GNU Public License версии 3 (GPLv3). Только Halite 4.0.1 и новее доступны на условиях Mozilla Public License.

Установка Halite

Прежде чем использовать Halite, необходимо выбрать версию, которая соответствует требованиям вашего проекта. Различия между требованиями доступных версий Halite кратко описаны ниже.

Примечание: Halite 5.0.x работает на PHP 8.0, но производительность ниже, чем на PHP 8.1.

Если вам нужна версия Halite до 5.1, обратитесь к документации, соответствующей этой конкретной ветке.

Чтобы установить Halite, сначала необходимо установить libsodium. Расширение PHP может понадобиться, а может и нет. Для большинства людей это означает выполнение...

root@kitploit:~
sudo apt-get install php7.2-sodium

...или эквивалентной команды для вашей операционной системы и версии PHP.

Если у вас возникли трудности, может помочь это пошаговое руководство, предоставленное @aolko.

После установки необходимых компонентов установите Halite через Composer:

root@kitploit:~
composer require paragonie/halite:^5

Коммерческая поддержка старых версий Halite

Бесплатная поддержка Halite распространяется только на самую последнюю основную версию (в настоящее время 5).

Если вашей компании требуется поддержка более старой версии Halite, свяжитесь с Paragon Initiative Enterprises, чтобы узнать о вариантах коммерческой поддержки.

Если вам нужен простой способ миграции со старых версий Halite, обратите внимание на halite-legacy.

Использование Halite в вашем проекте

Ознакомьтесь с документацией. Базовый API Halite спроектирован с упором на простоту:

  • Шифрование
    • Симметричное
      • Symmetric\Crypto::encrypt(HiddenString, EncryptionKey): string
      • Symmetric\Crypto::encryptWithAD(HiddenString, EncryptionKey, string): string
      • Symmetric\Crypto::decrypt(string, ):

Пример: шифрование и дешифрование сообщения

Сначала сгенерируйте и сохраните ключ ровно один раз:

root@kitploit:~
<?php
use ParagonIE\Halite\KeyFactory;

$encKey = KeyFactory::generateEncryptionKey();
KeyFactory::save($encKey, '/path/outside/webroot/encryption.key');

После этого вы можете шифровать/дешифровать сообщения следующим образом:

root@kitploit:~
<?php
use ParagonIE\Halite\KeyFactory;
use ParagonIE\Halite\Symmetric\Crypto as Symmetric;
use ParagonIE\HiddenString\HiddenString;

$encryptionKey = KeyFactory::loadEncryptionKey('/path/outside/webroot/encryption.key');

$message = new HiddenString('This is a confidential message for your eyes only.');
$ciphertext = Symmetric::encrypt($message, $encryptionKey);

$decrypted = Symmetric::decrypt($ciphertext, $encryptionKey);

var_dump($decrypted->getString() === $message->getString()); // bool(true)

В результате должно получиться нечто похожее на:

root@kitploit:~
MUIDAEpQznohvNlQ-ZRk-ZZ59Mmox75D_FgAIrXY2cUfStoeL-GIeAe0m-uaeURQdPsVmc5XxRw3-2x5ZAsZH_es37qqFuLFjUI-XK9uG0s30YTsorWfpHdbnqzhRuUOI09c-cKrfMQkNBNm0dDDwZazjTC48zWikRHSHXg8NXerVDebzng1aufc_S-osI_zQuLbZDODujEnpbPZhMMcm4-SWuyVXcBPdGZolJyT

Криптографические ключи в Halite

Важно: Halite работает с объектами Key, а не со строками.

Если вы попытаетесь выполнить echo объекта ключа, вы получите пустую строку, а не его содержимое. Если вы попытаетесь выполнить var_dump() для объекта ключа, вы получите только некоторые сведения о типе этого ключа.

Чтобы просмотреть необработанное бинарное содержимое ключа, необходимо явно вызвать $obj->getRawKeyMaterial(). В большинстве случаев делать это не рекомендуется.

Пример: создание ключа из пароля

root@kitploit:~
<?php
use ParagonIE\Halite\KeyFactory;
use ParagonIE\HiddenString\HiddenString;

$passwd = new HiddenString('correct horse battery staple');
// Use random_bytes(16); to generate the salt:
$salt = "\xdd\x7b\x1e\x38\x75\x9f\x72\x86\x0a\xe9\xc8\x58\xf6\x16\x0d\x3b";

$encryptionKey = KeyFactory::deriveEncryptionKey($passwd, $salt);

Ключ, полученный из пароля, можно использовать вместо случайно сгенерированного.

Пример: шифрование большого файла в системе с малым объёмом памяти

Halite включает класс для криптографической работы с файлами, который использует потоковый API, позволяя шифровать большие файлы (например, гигабайты) в системе с очень небольшим объёмом доступной памяти (т.е. менее 8 МБ).

root@kitploit:~
<?php
use ParagonIE\Halite\File;
use ParagonIE\Halite\KeyFactory;

$encryptionKey = KeyFactory::loadEncryptionKey('/path/outside/webroot/encryption.key');

File::encrypt('input.txt', 'output.txt', $encryptionKey);

Распространённые проблемы поддержки

Uncaught SodiumException: Cannot Wipe Memory

PHP Fatal error: Uncaught SodiumException: This is not implemented, as it is not possible to securely wipe memory from PHP

Решение — убедиться, что libsodium установлен и включён. Дополнительную информацию см. выше в этом README.

Контракты на поддержку

Если ваша компания использует эту библиотеку в своих продуктах или услугах, вас может заинтересовать приобретение контракта на поддержку у Paragon Initiative Enterprises.

Скачать инструмент
PHPlibsodiumPECL libsodiumПоддержка
Halite 5.1 и новее8.1.01.0.18Н/Д (стандарт)✔️ Активна
Halite 5.0.x8.0.01.0.18Н/Д (стандарт)✔️ Активна
Halite 4.1+7.2.01.0.15Н/Д (стандарт)❌ Не поддерживается
Halite 4.07.2.01.0.13Н/Д (стандарт)❌ Не поддерживается
Halite 37.0.01.0.91.0.6 / 2.0.4❌ Не поддерживается
Halite 27.0.01.0.91.0.6❌ Не поддерживается
Halite 15.6.01.0.61.0.2❌ Не поддерживается
EncryptionKey
HiddenString
  • Symmetric\Crypto::decryptWithAD(string, EncryptionKey, string): HiddenString
  • Асимметричное
    • Анонимное
      • Asymmetric\Crypto::seal(HiddenString, EncryptionPublicKey): string
      • Asymmetric\Crypto::unseal(string, EncryptionSecretKey): HiddenString
    • Аутентифицированное
      • Asymmetric\Crypto::encrypt(HiddenString, EncryptionSecretKey, EncryptionPublicKey): string
      • Asymmetric\Crypto::encryptWithAD(HiddenString, EncryptionSecretKey, EncryptionPublicKey, string): string
      • Asymmetric\Crypto::decrypt(string, EncryptionSecretKey, EncryptionPublicKey): HiddenString
      • Asymmetric\Crypto::decryptWithAD(string, EncryptionSecretKey, EncryptionPublicKey, string): HiddenString
  • Аутентификация
    • Симметричная
      • Symmetric\Crypto::authenticate(string, AuthenticationKey): string
      • Symmetric\Crypto::verify(string, AuthenticationKey, string): bool
    • Асимметричная
      • Asymmetric\Crypto::sign(string, SignatureSecretKey): string
      • Asymmetric\Crypto::verify(string, SignaturePublicKey, string): bool