GCM аутентифицированная функция шифрования для переполнения стека

Мне нужно запустить следующее на общей учетной записи веб-хостинга, работающей под управлением PHP версии 5.4.34. (То есть я не могу установить какие-либо сторонние библиотеки.)

Есть ли стандартная функция для реализации Galois / Counter Mode (GCM) аутентифицированное шифрование (из AES стандарт) на двоичной строке?

0

Решение

Если OpenSSL не установлен, то нет другого способа, кроме поиска простой реализации PHP в сети.

Если он установлен, вы можете проверить с openssl_get_cipher_methods() поддерживает ли установленная версия GCM. Используйте это так:

$strong;
$iv = openssl_random_pseudo_bytes(12, $strong);
if (!$strong) {
exit(1);
}
$key = openssl_random_pseudo_bytes(12, $strong);
if (!$strong) {
exit(1);
}

$data = "some string";
$ciphertext = openssl_encrypt($data, "aes-128-gcm", $key, 0, $iv);
$decrypted = openssl_decrypt($ciphertext, "aes-128-gcm", $key, 0, $iv);
var_dump($data == $decrypted);

Спасибо Скотту Аркишевскому за то, что он заметил в комментариях, что это совсем не работает для PHP < 7.1, потому что тег аутентификации не может быть получен во время шифрования и, следовательно, дешифрование всегда будет без него.

Если установлен mcrypt, вы можете проверить, доступен ли там GCM через mcrypt_list_modes, но я сильно сомневаюсь в этом.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]