PHP Sodium расширение предоставляет набор функций для работы с криптографией, включая шифрование AEGIS. AEGIS (Authenticated Encryption with Associated Data) - это алгоритм шифрования, который обеспечивает аутентификацию и целостность данных, а также конфиденциальность. Вот пример использования AEGIS для шифрования и дешифрования данных с помощью PHP Sodium:
Установка PHP Sodium
Для использования PHP Sodium убедитесь, что у вас установлено расширение Sodium. Оно должно быть включено по умолчанию в PHP 7.2 и выше. Вы можете проверить его наличие, выполнив следующую команду в консоли:
php -m | grep sodium
Если вы видите sodium
в выводе, это означает, что расширение установлено и готово к использованию.
Пример шифрования и дешифрования с AEGIS
<?php
// Данные для шифрования
$plaintext = "Hello, World!";
$ad = "Additional Data"; // Дополнительные данные для аутентификации
// Ключ и несекретный параметр
$key = sodium_crypto_aead_aes256gcm_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES);
// Шифрование
$ciphertext = sodium_crypto_aead_aes256gcm_encrypt($plaintext, $ad, $nonce, $key);
// Дешифрование
$decrypted = sodium_crypto_aead_aes256gcm_decrypt($ciphertext, $ad, $nonce, $key);
if ($decrypted === false) {
throw new Exception("Decryption failed");
}
echo "Decrypted: " . $decrypted . PHP_EOL;
В этом примере:
$plaintext
- это исходные данные, которые вы хотите зашифровать.$ad
- это дополнительные данные, которые используются для аутентификации. Они должны быть теми же при дешифровании.$key
- это ключ шифрования, который генерируется с помощьюsodium_crypto_aead_aes256gcm_keygen()
.$nonce
- это несекретный параметр, который должен быть уникальным для каждого шифрования. В этом примере он генерируется случайным образом с помощьюrandom_bytes()
.sodium_crypto_aead_aes256gcm_encrypt
используется для шифрования данных.sodium_crypto_aead_aes256gcm_decrypt
используется для дешифрования данных.
Обратите внимание, что ключ и несекретный параметр ($key
и $nonce
) должны быть сохранены в безопасном месте и использоваться для шифрования и дешифрования данных. Несекретный параметр должен быть уникальным для каждого шифрования, но не секретным и может быть передан вместе с зашифрованными данными.
0 комментариев