Как проверить парольную фразу с помощью закрытого ключа в PHP?Php

Кемеровские программисты php общаются здесь
Anonymous
Как проверить парольную фразу с помощью закрытого ключа в PHP?

Сообщение Anonymous »

Я работаю над проверкой парольной фразы для закрытого ключа в PHP. Моя цель — подтвердить, верна ли предоставленная парольная фраза для данного закрытого ключа. Вот базовый подход, который я пытаюсь использовать, но, похоже, я столкнулся с проблемой, когда проверка работает даже для неправильных парольных фраз.
Что я пробовал:
Я декодирование закрытого ключа в кодировке Base64, временное сохранение его в файле, а затем использование openssl_pkey_get_private() для загрузки закрытого ключа с парольной фразой. Вот упрощенная версия кода:

Код: Выделить всё

$private_key_encoded = '...';  // Base64 encoded private key
$passphrase = 'your_passphrase';

// Decode the base64-encoded private key
$private_key_decoded = base64_decode($private_key_encoded);

// Write decoded private key to a temporary file
$tmp_key_file = tempnam(sys_get_temp_dir(), 'key');
file_put_contents($tmp_key_file, $private_key_decoded);

// Try to load the private key using the passphrase
$privateKey = openssl_pkey_get_private("file://$tmp_key_file", $passphrase);

if ($privateKey !== false) {
echo 'Passphrase is correct!';
} else {
echo 'Passphrase is incorrect!';
}

// Clean up temporary file
unlink($tmp_key_file);
Даже если я использую неправильную парольную фразу, openssl_pkey_get_private() возвращает объект OpenSSLAsymmetricKey (в PHP 8.x). Это заставляет меня думать, что парольная фраза не проверяется строго.
Каков правильный способ строгой проверки парольной фразы для закрытого ключа в PHP? Есть ли более надежный способ убедиться, что парольная фраза проверена? Стоит ли мне попытаться подписать данные с помощью ключа для принудительной проверки?
Будем признательны за любые советы или примеры кода. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/790 ... key-in-php

Вернуться в «Php»