Home  >  Article  >  Backend Development  >  PHP implements AES symmetric encryption technology

PHP implements AES symmetric encryption technology

WBOY
WBOYOriginal
2023-06-18 08:46:134476browse

With the continuous development of information technology, encryption technology is increasingly used in various fields. Among them, AES symmetric encryption technology is one of the most commonly used encryption algorithms at present. It can ensure the security of data and has a wide range of applications. This article will introduce how to use PHP to implement AES symmetric encryption technology.

1. What is AES symmetric encryption technology?

AES is the abbreviation of Advanced Encryption Standard (Advanced Encryption Standard) and is one of the most widely used symmetric encryption algorithms currently. Symmetric encryption means that the same key is used for encryption and decryption. The principle is to perform complex XOR operations, shifts and substitutions on the plaintext and the key to obtain the ciphertext. Without the key, decryption is not possible.

2. Using AES symmetric encryption in PHP

1. Load openssl extension and generate key

To use AES symmetric encryption in PHP, you need to use openssl extension. This extension can be turned on in the php.ini file, or you can load it in your code using the following code:

extension=php_openssl.dll

Generating the keys required for encryption and decryption requires the openssl_random_pseudo_bytes() function, as shown below:

$key = openssl_random_pseudo_bytes(16);

This function generates a 16-byte random number for encryption and decryption.

2. Encryption and decryption

Next, we can use openssl_encrypt() and openssl_decrypt() functions to encrypt and decrypt data.

The following is a code example using the openssl_encrypt() function for encryption:

$data = 'hello world';
$cipher = 'AES-128-CBC';
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$encrypted_data = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$encrypted_data = base64_encode($encrypted_data . ':' . $iv);

Explain the code:

  • The first parameter is the data that needs to be encrypted;
  • The second parameter is the encryption algorithm, you can choose AES-128-CBC, AES-192-CBC or AES-256-CBC;
  • The third parameter is the key;
  • The fourth parameter is the encryption method, you can choose OPENSSL_RAW_DATA or OPENSSL_ZERO_PADDING;
  • The fifth parameter is the initialization vector (IV), which is used to increase the strength of the encryption algorithm.

Note: IV needs to be added before the encrypted ciphertext for use in decryption.

The following is a code example for decryption using the openssl_decrypt() function:

$encrypted_data = base64_decode($encrypted_data);
$parts = explode(':', $encrypted_data);
$decrypted_data = openssl_decrypt($parts[0], $cipher, $key, OPENSSL_RAW_DATA, $parts[1]);

Explain the code:

  • The first parameter is the data that needs to be decrypted;
  • The second parameter is the encryption algorithm, which needs to be the same as the algorithm used for encryption;
  • The third parameter is the key, which needs to be the same as the key used for encryption;
  • The fourth parameter is the encryption method, which needs to be the same as the method used for encryption;
  • The fifth parameter is the IV, which needs to be the same as the IV used for encryption.

3. Code Example

The following is the complete encryption and decryption sample code:

$key = openssl_random_pseudo_bytes(16);
$data = 'hello world';
$cipher = 'AES-128-CBC';
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$encrypted_data = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
$encrypted_data = base64_encode($encrypted_data . ':' . $iv);
$encrypted_data = base64_decode($encrypted_data);
$parts = explode(':', $encrypted_data);
$decrypted_data = openssl_decrypt($parts[0], $cipher, $key, OPENSSL_RAW_DATA, $parts[1]);
echo $decrypted_data;

After running the code, the output is:

hello world

4. Summary

This article introduces the method of using PHP to implement AES symmetric encryption technology, including key generation, encryption, decryption and other operations. The AES symmetric encryption algorithm is one of the most widely used encryption algorithms currently. It has high security and a wide range of applications. I hope this article can help you understand and apply AES symmetric encryption technology.

The above is the detailed content of PHP implements AES symmetric encryption technology. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn