PHP7 OpenSSL DES-EDE-CBC encryption and decryption
1. Conditional constraints
The mcrypt library commonly used on PHP5 has been removed on PHP7.1, so we use openssl to encrypt and decrypt data.
The encryption method adopts DES-EDE-CBC method.
The key filling method is: using a 24-bit key, first perform MD5 verification on the key to obtain a 16-bit string, and then take the first 8 digits of the key MD5 verification value and append them to the previous value. value behind. A 24-bit key is assembled from this.
2. Code sharing
<?php
class DesEdeCbc {
private $cipher, $key, $iv;
/**
* DesEdeCbc constructor.
* @param $cipher
* @param $key
* @param $iv
*/
public function __construct($cipher, $key, $iv) {
$this->cipher = $cipher;
$this->key= $this->getFormatKey($key);
$this->iv = $iv;
}
/**
* @func 加密
* @param $msg
* @return string
*/
public function encrypt($msg) {
$des = @openssl_encrypt($msg, $this->cipher, $this->key, OPENSSL_RAW_DATA, $this->iv);
return base64_encode($des);
}
/**
* @func 解密
* @param $msg
* @return string
*/
public function decrypt($msg) {
return @openssl_decrypt(base64_decode($msg), $this->cipher, $this->key, OPENSSL_RAW_DATA, $this->iv);
}
/**
* @func 生成24位长度的key
* @param $skey
* @return bool|string
*/
private function getFormatKey($skey) {
$md5Value= md5($skey);
$md5ValueLen = strlen($md5Value);
$key = $md5Value . substr($md5Value, 0, $md5ValueLen / 2);
return hex2bin($key);
}
}
$cipher = 'DES-EDE-CBC';
$msg = 'HelloWorld';
$key = '12345678';
$iv = "\x00\x00\x00\x00\x00\x00\x00\x00";
$des = new DesEdeCbc($cipher, $key, $iv);
// 加密
$msg = $des->encrypt($msg);
echo '加密后: ' . $msg . PHP_EOL;
// 解密
$src = $des->decrypt($msg);
echo '解密后: ' . $src . PHP_EOL;3. A little explanation
You can adjust the encryption method and key filling according to the actual situation methods, and iv vectors to meet different needs.
For more related PHP7 articles, please visit: "PHP7" Tutorial
The above is the detailed content of PHP7 OpenSSL DES-EDE-CBC encryption and decryption. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
Undresser.AI Undress
AI-powered app for creating realistic nude photos
AI Clothes Remover
Online AI tool for removing clothes from photos.
Clothoff.io
AI clothes remover
Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!
Hot Article
Hot Tools
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
What should I do if the plug-in is installed in php7.0 but it still shows that it is not installed?
Apr 02, 2024 pm 07:39 PM
To resolve the plugin not showing installed issue in PHP 7.0: Check the plugin configuration and enable the plugin. Restart PHP to apply configuration changes. Check the plugin file permissions to make sure they are correct. Install missing dependencies to ensure the plugin functions properly. If all other steps fail, rebuild PHP. Other possible causes include incompatible plugin versions, loading the wrong version, or PHP configuration issues.
How to solve the problem when php7 detects that the tcp port is not working
Mar 22, 2023 am 09:30 AM
In php5, we can use the fsockopen() function to detect the TCP port. This function can be used to open a network connection and perform some network communication. But in php7, the fsockopen() function may encounter some problems, such as being unable to open the port, unable to connect to the server, etc. In order to solve this problem, we can use the socket_create() function and socket_connect() function to detect the TCP port.
Why does an error occur when installing an extension using PECL in a Docker environment? How to solve it?
Apr 01, 2025 pm 03:06 PM
Causes and solutions for errors when using PECL to install extensions in Docker environment When using Docker environment, we often encounter some headaches...
How to install mongo extension in php7.0
Nov 21, 2022 am 10:25 AM
How to install the mongo extension in php7.0: 1. Create the mongodb user group and user; 2. Download the mongodb source code package and place the source code package in the "/usr/local/src/" directory; 3. Enter "src/" directory; 4. Unzip the source code package; 5. Create the mongodb file directory; 6. Copy the files to the "mongodb/" directory; 7. Create the mongodb configuration file and modify the configuration.
PHP Server Environment FAQ Guide: Quickly Solve Common Problems
Apr 09, 2024 pm 01:33 PM
Common solutions for PHP server environments include ensuring that the correct PHP version is installed and that relevant files have been copied to the module directory. Disable SELinux temporarily or permanently. Check and configure PHP.ini to ensure that necessary extensions have been added and set up correctly. Start or restart the PHP-FPM service. Check the DNS settings for resolution issues.
How to automatically set permissions of unixsocket after system restart?
Mar 31, 2025 pm 11:54 PM
How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...
How to install and deploy php7.0
Nov 30, 2022 am 09:56 AM
How to install and deploy php7.0: 1. Go to the PHP official website to download the installation version corresponding to the local system; 2. Extract the downloaded zip file to the specified directory; 3. Open the command line window and go to the "E:\php7" directory Just run the "php -v" command.
Record once and use strace to diagnose the problem of PHP occupying too much system resources.
May 03, 2024 pm 04:31 PM
Local environment: redhat6.7 system. nginx1.12.1, php7.1.0, the code uses the yii2 framework problem: the local web site needs to use the elasticsearch service. When PHP uses elasticsearch built on a local server, the local load is normal. When I use AWS's elasticsearch service, the load on the local server is often too high. Check the nginx and php logs and find no exceptions. The number of concurrent connections in the system is also not high. At this time, I thought of a strace diagnostic tool that our boss told me. Debugging process: Find a php sub-process idstrace-


