openssl
openssl_public_encrypt
encryption
openssl_public_encrypt
เป็นการเข้ารหัสลับคล้ายๆ กับ openssl_encrypt
แต่ส่วนที่เพิ่มเติมคือมีการใช้ Public Key เข้ามาเกี่ยวข้อง
การเข้ารหัสแบบ Public Key
จะเป็นแบบ Asymmetric
ซึ่งทำให้มีคีย์ที่เกี่ยวข้องอยู่ 2 Key คือ Public Key
และ Private Key
โดยข้อมูลที่เข้ารหัสด้วย Public Key
ต้องถอดรหัสด้วย Private Key
ที่เข้าคู่กันเท่านั้น
นั้นหมายความว่า ทุกคนเห็นข้อมูลที่เป็น ciphertext
แต่จะมีคนที่มี Private Key
เท่านั้นที่สามารถอ่านออก อธิบายดังรูปด้านล่าง
openssl_public_encrypt ( string $data , string &$crypted , mixed $key , int $padding = OPENSSL_PKCS1_PADDING ) : bool
| Parameter | Description | |————-|———————————————————| |data |. | |encrypted |It will have the data that is encrypted. | | key | The public key. | | padding | The padding you can apply are : OPENSSL_PKCS1_PADDING, OPENSSL_SSLV23_PADDING, OPENSSL_PKCS1_OAEP_PADDING, OPENSSL_NO_PADDING. |
<?php
$bool = openssl_public_encrypt ("this is some data",$crypted,"file:///tmp/public-key.pem",OPENSSL_PKCS1_PADDING);
// shows the result in base64 and decrypted
if ($bool)
{
$base64 = base64_encode($crypted);
$d_bool = openssl_private_decrypt(
$crypted,
$decrypted,"file:///tmp/private-key.pem",OPENSSL_PKCS1_PADDING);
}
?>
$crypted = 'Guև�X��̉�8"-E�U��N�' . "\0" . '���Bd��|5�E�j4��Ë&}���gJ����]l\\��n`��`��z���S�l��c�x�}-�V�)\\D�,M*�(ex0�C�i�o-\\\\�$��yRg��8o#3��t� 6�E�3�UH�K"��' . "\0" . '&�w���8�|Y8�`�YZ�VIQ�O�<㟆F(�
P���&��W^ ���Ɉ�>�#J��[�l�r���s�-6*z��?�C^ͧ&��KK+�'
$bool = true
$base64 = 'R3XWh/RY8JTwssyJBqs4Ii0HRYdVH9rPTuKXAJiOokJk5+B8NZIUReVqNJLVw4smfYXKwpSLZ0rAqtEG6KldbBpcp51uYBrsERKjFGDA7XqtE+/XUx/FbKWJBwhj6AZ4/30tzlbnKVwIRKcsHk0q3yhlE3gw1UO5acdvLRZcXMUkkOF5BFJnm+GqOBQSbyMztBbJdJkNNqdF3DPtVUi/SyKb6gAmoHeyxdI4snxZOPO6pmCrAlla21ZJUYRPmzzjn4ZGKO4KUMCaGvsm+9RXXiC3offJiM8+GbQjShnfEKJb6GyHcrO4FONzDpMtNip6maA/BPNDXs2nJv33S0srmg=='
$d_bool = true
$decrypted = 'this is some data'