English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP базовый учебник

PHP продвинутый учебник

PHP & MySQL

PHP справочник

PHP openssl_public_decrypt() функция использование и пример

PHP OpenSSL функции руководства

Функция openssl_public_decrypt() используется для декодирования данных с помощью публичного ключа.

Определение и использование

openssl_public_decrypt()Функция будет декодировать данные с помощью публичного ключа.

Использование функции openssl_public_decrypt() для расшифровки данных, зашифрованных с помощью openssl_private_encrypt().

Синтаксис

openssl_public_decrypt( string $data , string &$decrypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] ) : bool

Параметр

НомерПараметрОписание
1

данные

Данные, зашифрованные с помощью openssl_private_encrypt().

2

расшифрованный

У него будут данные, которые будут расшифрованы.

3

ключ

Публичный ключ.

4

padding

Вы можете применить заполнение: OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING.

Возвратное значение

Функция openssl_public_decrypt() возвращает TRUE при успешном выполнении и FALSE при ошибке.

Версия PHP

Эта функция начнет работать с версии PHP 5.0.0 и выше.

Пример 1

Для шифрования данных с помощью openssl_private_encrypt() и дешифрования с помощью openssl_public_decrypt():

<?php
      //сохранение частного ключа
	$privkey = openssl_pkey_new();
	openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/privatekey.pem');
	//шифрование данных
	$data = 'Welcome To oldtoolbag.com';
	$isvalid = openssl_private_encrypt($data, $crypted, file_get_contents('C:/xampp/htdocs/modules/openssl/privatekey.pem'), OPENSSL_PKCS1_PADDING);	
	echo "Шифрование данных: " . $crypted;
	echo "\
	//сохранение открытого ключа
	$dn = array(
		"countryName" => "IN",
		"stateOrProvinceName" => "Karnataka",
		"localityName" => "test1",
		"organizationName" => "test2",
		"organizationalUnitName" => "test3",
		"commonName" => "www.test.com",
		"emailAddress" => "[email protected]"
	);
	$cert = openssl_csr_new($dn, $privkey);
	$cert = openssl_csr_sign($cert, null, $privkey, 365);
	openssl_x509_export_to_file($cert, 'C:/xampp/htdocs/modules/openssl/publickey.pem');
	if ($isvalid) {	
		openssl_public_decrypt($crypted, $decrypted, file_get_contents('C:/xampp/htdocs/modules/openssl/publickey.pem'), OPENSSL_PKCS1_PADDING);	
		echo "Декриптация данных: ". $decrypted;
	}
?>

Это приведет к следующим результатам:

Шифрование данных: k���G��7)xy{�N3Г�x<�J^�gd��Ψ�I?{��<�Ws3�mW$��h��(F;tJ�J�W��|�9L�vL��xF���f����,�(N�ΰ��n���Y%Oo,�2����Qh��G�|-����}���1�6Tm�qS�wb���[�i�-r�F��rQhZ���$�� ��U�pMC��Y�n�0,Z�CuG��8�h��@4f��7ؕ�w��;�����d���ʈ����$�I^�Z���at��?
Дешифрование данных: Welcome To oldtoolbag.com

Пример 2

Для шифрования содержимого файла с помощью openssl_private_encrypt() и дешифрования с помощью openssl_public_decrypt():

<?php
       //сохранение частного ключа
	$privkey = openssl_pkey_new();
	openssl_pkey_export_to_file($privkey, 'C:/xampp/htdocs/modules/openssl/privatekey.pem');
	//шифрование данных
	$data = file_get_contents('C:/xampp/htdocs/modules/openssl/test.txt');
	$isvalid = openssl_private_encrypt($data, $crypted, file_get_contents('C:/xampp/htdocs/modules/openssl/privatekey.pem'), OPENSSL_PKCS1_PADDING);	
	echo "Шифрование данных: " . $crypted;
	echo "\
	//сохранение открытого ключа
	$dn = array(
		"countryName" => "IN",
		"stateOrProvinceName" => "Karnataka",
		"localityName" => "test1",
		"organizationName" => "test2",
		"organizationalUnitName" => "test3",
		"commonName" => "www.test.com",
		"emailAddress" => "[email protected]"
	);
	$cert = openssl_csr_new($dn, $privkey);
	$cert = openssl_csr_sign($cert, null, $privkey, 365);
	openssl_x509_export_to_file($cert, 'C:/xampp/htdocs/modules/openssl/publickey.pem');
	if ($isvalid) {	
		openssl_public_decrypt($crypted, $decrypted, file_get_contents('C:/xampp/htdocs/modules/openssl/publickey.pem'), OPENSSL_PKCS1_PADDING);	
		echo "Декриптация данных: ". $decrypted;
	}
?>

Это приведет к следующим результатам:

Шифрование данных: ��V*�+@4CҺX�i�mM6��� ���,?�F,��+�q �����@�������g�N6c<*eh��:������5Z��&�&'+= ���b���J�r ��aO�@gƝ��m�Gy�4W2�ҋ����%���pX@�k�DW�fEW��$j�>i��~��1���w�m}���}�����5I��x� ��H�*A8�� ��U�7~°���F�}4����DV�MZ��望C �'C��-�7�f�
Декриптация данных: Это тест шифрования данных с использованием модуля openssl php.

PHP OpenSSL функции руководства