การเข้ารหัส และถอดรหัส RSA ด้วย php (openssl)


หน้าแรก PHP MySQL เกร็ดความรู้ การเข้ารหัส และถอดรหัส RSA ด้วย php (openssl)
อันดับแรก ต้อง generate คู่คีย์ขึ้นมาก่อน (public key และ private key)

<?

// generate a 1024 bit rsa private key, returns a php resource, save to file
$privateKey = openssl_pkey_new(array(
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
));
openssl_pkey_export_to_file($privateKey, './keys/privatekey', $passphrase);
 
// get the public key $keyDetails['key'] from the private key;
$keyDetails = openssl_pkey_get_details($privateKey);
file_put_contents('./keys/publickey', $keyDetails['key']);

?>


จะได้ public key ประมาณนี้
—–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLtHYvGEXxKljcb+Ht+boN0pWR tNRJ2j06sPwIUbcH2aELqlmVpx3×4hLMFXShrIo+XyiU9giezTOcrNw/7uW7seCr bjCyKD3hzg+l80BqmTmt+QG8ZOFWdltxIgFB0Y3AAbN3sW3zgrd/Io56M5GQwFDk nQmTqjXjFLA3qaQ6WQIDAQAB —–END PUBLIC KEY—–

และจะได้ private key ประมาณนี้

—–BEGIN RSA PRIVATE KEY—– MIICXQIBAAKBgQDLtHYvGEXxKljcb+Ht+boN0pWRtNRJ2j06sPwIUbcH2aELqlmV px3×4hLMFXShrIo+XyiU9giezTOcrNw/7uW7seCrbjCyKD3hzg+l80BqmTmt+QG8 ZOFWdltxIgFB0Y3AAbN3sW3zgrd/Io56M5GQwFDknQmTqjXjFLA3qaQ6WQIDAQAB AoGAZ6HGYk0p//f4PyUYPpZGZhPVDcx+F5hUgBBcF+tifzbjbGjcrHrZjB3kTDk6 HaoGppaIsce9OPTSJgn2/vuNmZf9de5wa9UaH605AqeaOSKibfDc3eZ1c+9IhGGd F7QPUiUhIfqyFPNAo/D6mFQwlSsh54v58kfdrRR9oaVFnlUCQQDrdj7mlhVKIexF wlDzGS/+spdeCQqBxrRkFC3sNACSE0jS5VYKFogesfX7oDdRIA474bq0QRtpsGJn AtcEvfOTAkEA3XkY/7wiQ+Zf2au0xjDxo3IJsDX/7Rsm9etPgnsMnMyo06uMQH22 rFiW99f6BwXvXbxBcaq28EbPbstzvZsl4wJACkPAYDsAuJeb/jqHXuGlNvxAHwhT 3e50pLxAeECYGcYfcZov0wbCblwhthN49d9o33FquzrvX/8hew4jo4BIYwJBANyU tQJYZaRM+eA5NSZELxcECIQ5dDm6VlaOVDV3yrsM14VikaDV1K/Y2BvnPz3peltY mbHVPrkXPZhzCEarFNMCQQCcBBU+m5wB6Fx8GejG+/o3o0vYxwSajwS6OuSuIu/T Gab7L+GQ2Eweyy44o71NaLT82V3qk/HgdylYwXeMJ9PI —–END RSA PRIVATE KEY—–

Code การเข้ารหัสและถอดรหัส
<?
$message="Test Message";
//encrypt using publickey
$pubKey = openssl_pkey_get_public(file_get_contents('./keys/public'));
openssl_public_encrypt($message, $encryptedData, $pubKey);
//decrypt using privatekey
$privateKey = openssl_pkey_get_private(file_get_contents('./keys/private'));
openssl_private_decrypt($encryptedData, $decryptedData, $privateKey);
echo "Message : " . $message ."n<br>n";
echo "Encrypted : " . $encryptedData ."n<br>n";
echo "Decrypted : " . $decryptedData ."n<br>n";
?>



ขึ้นไปด้านบน