ओपनएसएल के आधार पर टेक्स्ट स्ट्रिंग को एन्क्रिप्ट और डिक्रिप्ट करने के लिए PHP 8.1 पर परीक्षण की गई स्क्रिप्ट का एक उदाहरण यहां दिया गया है।
nano encrypt-decrypt.php
<?php
define('ENCRYPTION_KEY', '<mark>my-secret-key-there-2121</mark>');
// Encrypt
$plaintext = "<output>PHP 8.1 में एन्क्रिप्शन के लिए टेस्ट स्ट्रिंग</output>";
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($plaintext, $cipher, ENCRYPTION_KEY, $options=OPENSSL_RAW_DATA, $iv);
$hmac = hash_hmac('sha256', $ciphertext_raw, ENCRYPTION_KEY, $as_binary=true);
$ciphertext = base64_encode( $iv.$hmac.$ciphertext_raw );
<output>echo $ciphertext.'<br>';</output>
// Decrypt
$c = base64_decode($ciphertext);
$ivlen = openssl_cipher_iv_length($cipher="AES-128-CBC");
$iv = substr($c, 0, $ivlen);
$hmac = substr($c, $ivlen, $sha2len=32);
$ciphertext_raw = substr($c, $ivlen+$sha2len);
$plaintext = openssl_decrypt($ciphertext_raw, $cipher, ENCRYPTION_KEY, $options=OPENSSL_RAW_DATA, $iv);
$calcmac = hash_hmac('sha256', $ciphertext_raw, ENCRYPTION_KEY, $as_binary=true);
if (hash_equals($hmac, $calcmac))
{
<output>echo $plaintext;</output>
}
?>
पहली पंक्ति एन्क्रिप्शन का परिणाम है, और दूसरी पंक्ति डिक्रिप्शन है। इसके अलावा, यदि हम वाक्यांश को बदले बिना पृष्ठ को ताज़ा करते हैं, तो हमें हमेशा एक अलग परिणाम मिलेगा, लेकिन डिक्रिप्ट होने पर यह वही होगा।
इन फ़ंक्शंस को अलग-अलग फ़ाइलों में अलग करने के लिए, आपको कुंजी को ENCRYPTION_KEY पैरामीटर में स्थानांतरित करने की आवश्यकता होगी।
No Comments Yet