Щоб підписати документи в PHP, ви можете використовувати бібліотеку OpenSSL, яка дозволяє створювати та перевіряти цифрові підписи. Ось кроки, які вам слід зробити:
openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private_key.pem -out public_key.pem
function create_signature($data, $private_key_pem) {
$private_key = openssl_pkey_get_private($private_key_pem);
openssl_sign($data, $signature, $private_key, OPENSSL_ALGO_SHA256);
openssl_free_key($private_key);
return base64_encode($signature);
}
function verify_signature($data, $signature, $public_key_pem) {
$public_key = openssl_pkey_get_public($public_key_pem);
$decoded_signature = base64_decode($signature);
$result = openssl_verify($data, $decoded_signature, $public_key, OPENSSL_ALGO_SHA256);
openssl_free_key($public_key);
return $result === 1;
}
// Завантажте ваші ключі
$private_key_pem = file_get_contents(`private_key.pem`);
$public_key_pem = file_get_contents(`public_key.pem`);
// Дані, які ви хочете підписати
$data = `Це тестовий документ.`;
// Створіть цифровий підпис
$signature = create_signature($data, $private_key_pem);
echo "Підпис: $signature
";
// Перевірте цифровий підпис
$is_valid = verify_signature($data, $signature, $public_key_pem);
echo "Підпис вірний? " . ($is_valid ? `Так` : `Ні`) . "
";
Це приклад використання OpenSSL для створення та перевірки цифрових підписів в PHP. Зверніть увагу, що вам потрібно зберігати ваш приватний ключ у безпечному місці та передавати лише публічний ключ тим, хто потребує перевірки підписів.
Щоб підписати документи за допомогою цифрового підпису від українських сертифікаційних центрів у PHP, вам слід спочатку отримати цифровий сертифікат від відповідного українського сертифікаційного центру. Після цього ви можете використовувати такі програмні бібліотеки, як OpenSSL або Cryptography, для роботи з підписами.
У цьому прикладі ми продемонструємо, як підписати документ в PHP за допомогою бібліотеки OpenSSL і приватного ключа, який був отриманий разом з сертифікатом.
function create_signature($data, $private_key_pem) {
$private_key = openssl_pkey_get_private($private_key_pem);
openssl_sign($data, $signature, $private_key, OPENSSL_ALGO_SHA256);
openssl_free_key($private_key);
return base64_encode($signature);
}
Використовуйте функцію для підпису даних:
// Завантажте ваш приватний ключ
$private_key_pem = file_get_contents(`private_key.pem`);
// Дані, які ви хочете підписати
$data = `Це тестовий документ.`;
// Створіть цифровий підпис
$signature = create_signature($data, $private_key_pem);
echo "Підпис: $signature
";
Цей приклад демонструє створення цифрового підпису в PHP за допомогою приватного ключа, отриманого від українського сертифікаційного центру. Зверніть увагу, що вам потрібно зберігати ваш приватний ключ у безпечному місці та не передавати його стороннім особам.
ПриватБанк надає послуги електронного підпису через свій сервіс "Електронна цифрова підпис" (ЕЦП). Для підписання документів ключем ПриватБанку в PHP, вам потрібно зробити наступне:
function create_signature($data, $private_key_pem) {
$private_key = openssl_pkey_get_private($private_key_pem);
openssl_sign($data, $signature, $private_key, OPENSSL_ALGO_SHA256);
openssl_free_key($private_key);
return base64_encode($signature);
}
// Завантажте ваш приватний ключ
$private_key_pem = file_get_contents(`private_key.pem`);
// Дані, які ви хочете підписати
$data = `Це тестовий документ.`;
// Створіть цифровий підпис
$signature = create_signature($data, $private_key_pem);
echo "Підпис: $signature
";
Цей приклад демонструє створення цифрового підпису в PHP за допомогою приватного ключа, отриманого від сервісу ЕЦП ПриватБанку. Зверніть увагу, що вам потрібно зберігати ваш приватний ключ у безпечному місці та не передавати його стороннім особам. Щоб перевірити підпис, вам потрібно використовувати публічний ключ, відповідний приватному ключу використовуваному для створення підпису.
Автор: Рудюк С.А. 2023. K2 Cloud ERP.