In PHP, Encryption and Decryption of a string is possible using one of the Cryptography Extensions called OpenSSL function for encrypt and decrypt. openssl_encrypt() Function: The openssl_encrypt() function is used to encrypt the data. Syntax:
string openssl_encrypt( string $data, string $method, string $key,
$options = 0, string $iv, string $tag= NULL,
string $aad, int $tag_length = 16 )
Parameters:
- $data: It holds the string or data which need to be encrypted.
- $method: The cipher method is adopted using openssl_get_cipher_methods() function.
- $key: It holds the encryption key.
- $options: It holds the bitwise disjunction of the flags OPENSSL_RAW_DATA and OPENSSL_ZERO_PADDING.
- $iv: It holds the initialization vector which is not NULL.
- $tag: It holds the authentication tag which is passed by reference when using AEAD cipher mode (GCM or CCM).
- $aad: It holds the additional authentication data.
- $tag_length: It holds the length of the authentication tag. The length of authentication tag lies between 4 to 16 for GCM mode.
Return Value: It returns the encrypted string on success or FALSE on failure. openssl_decrypt() Function The openssl_decrypt() function is used to decrypt the data. Syntax:
string openssl_decrypt( string $data, string $method, string $key,
int $options = 0, string $iv, string $tag, string $aad)
Parameters:
- $data: It holds the string or data which need to be encrypted.
- $method: The cipher method is adopted using openssl_get_cipher_methods() function.
- $key: It holds the encryption key.
- $options: It holds the bitwise disjunction of the flags OPENSSL_RAW_DATA and OPENSSL_ZERO_PADDING.
- $iv: It holds the initialization vector which is not NULL.
- $tag: It holds the authentication tag using AEAD cipher mode (GCM or CCM). When authentication fails openssl_decrypt() returns FALSE.
- $aad: It holds the additional authentication data.
Return Value: It returns the decrypted string on success or FALSE on failure. Approach: First declare a string and store it into variable and use openssl_encrypt() function to encrypt the given string and use openssl_decrypt() function to descrypt the given string. Example 1: This example illustrates the encryption and decryption of string.
php
<?php
$simple_string = "Welcome to GeeksforGeeks\n";
echo "Original String: " . $simple_string ;
$ciphering = "AES-128-CTR";
$iv_length = openssl_cipher_iv_length( $ciphering );
$options = 0;
$encryption_iv = '1234567891011121' ;
$encryption_key = "GeeksforGeeks";
$encryption = openssl_encrypt( $simple_string , $ciphering ,
$encryption_key , $options , $encryption_iv );
echo "Encrypted String: " . $encryption . "\n";
$decryption_iv = '1234567891011121' ;
$decryption_key = "GeeksforGeeks";
$decryption =openssl_decrypt ( $encryption , $ciphering ,
$decryption_key , $options , $decryption_iv );
echo "Decrypted String: " . $decryption ;
?>
|
Output:
Original String: Welcome to GeeksforGeeks
Encrypted String: hwB1K5NkfcIzkLTWQeQfHLNg5FlyX3PNUA==
Decrypted String: Welcome to GeeksforGeeks
Example 2: Below example illustrate the encryption and decryption of string. Here string to be encrypted and decrypted string will be same but the encrypted string is randomly changed respectively.
php
<?php
$simple_string = "Welcome to GeeksforGeeks" ;
echo "Original String: " . $simple_string . "\n" ;
$ciphering = "BF-CBC" ;
$iv_length = openssl_cipher_iv_length( $ciphering );
$options = 0;
$encryption_iv = random_bytes( $iv_length );
$encryption_key = openssl_digest(php_uname(), 'MD5' , TRUE);
$encryption = openssl_encrypt( $simple_string , $ciphering ,
$encryption_key , $options , $encryption_iv );
echo "Encrypted String: " . $encryption . "\n" ;
$decryption = openssl_decrypt( $encryption , $ciphering ,
$encryption_key , $options , $encryption_iv );
echo "Decrypted String: " . $decryption ;
?>
|
Output
Original String: Welcome to GeeksforGeeks
Encrypted String: czY0b71f1vAD9EyyLP4wOke+C8i9QkbbPCrA0se0bjc=
Decrypted String: Welcome to GeeksforGeeks
References:
PHP is a server-side scripting language designed specifically for web development. You can learn PHP from the ground up by following this PHP Tutorial and PHP Examples.
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!