PHP7中如何实现DES-EDE-CBC加密解密操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计612个文字,预计阅读时间需要3分钟。
本章节向家长介绍PHP7中使用DES-EDE-CBC加密解密的方法。具有一定的参考价值,有需要的亲朋好友可参考以下内容,希望对家长有所帮助。
1. 条件限制:PHP7.1及以上版本
PHP7中,由于安全考虑,官方已弃用mcrypt库,推荐使用openssl库进行加密解密操作。以下是使用openssl实现DES-EDE-CBC加密解密的方法:
php
// 解密函数function des_ede_cbc_decrypt($data, $key, $iv) { $key=substr(hash('sha256', $key, true), 0, 24); $iv=substr(hash('sha256', $iv, true), 0, 8); $decrypted=openssl_decrypt(base64_decode($data), 'des-ede-cbc', $key, OPENSSL_RAW_DATA, $iv); return $decrypted;}
// 示例$key='12345678'; // 密钥$iv='abcdefgh'; // 初始化向量$data='Hello, world!'; // 待加密数据
// 加密$encrypted=des_ede_cbc_encrypt($data, $key, $iv);echo 'Encrypted: ' . $encrypted . PHP_EOL;
// 解密$decrypted=des_ede_cbc_decrypt($encrypted, $key, $iv);echo 'Decrypted: ' . $decrypted . PHP_EOL;?>
注意:在实际应用中,请确保密钥和初始化向量(IV)的安全,避免泄露。
本篇文章给大家介绍一下PHP7中使用“DES-EDE-CBC”加解密的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
1. 条件约束之前PHP5上常使用的mcrypt库在PHP7.1+上已经被移除,故我们采用openssl对数据进行加解密。
加密方式采用DES-EDE-CBC方式。
密钥填充方式为:采用24位密钥,先将key进行MD5校验取值,得出16位字串,再取key MD5校验值前8位追加到先前的取值后面。由此组装出24位的密钥。
2. 代码分享<?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. 一点说明
可以根据实际情况调整加密方式、key的填充方式、及iv向量来满足不同的需求。
推荐学习:php视频教程
本文共计612个文字,预计阅读时间需要3分钟。
本章节向家长介绍PHP7中使用DES-EDE-CBC加密解密的方法。具有一定的参考价值,有需要的亲朋好友可参考以下内容,希望对家长有所帮助。
1. 条件限制:PHP7.1及以上版本
PHP7中,由于安全考虑,官方已弃用mcrypt库,推荐使用openssl库进行加密解密操作。以下是使用openssl实现DES-EDE-CBC加密解密的方法:
php
// 解密函数function des_ede_cbc_decrypt($data, $key, $iv) { $key=substr(hash('sha256', $key, true), 0, 24); $iv=substr(hash('sha256', $iv, true), 0, 8); $decrypted=openssl_decrypt(base64_decode($data), 'des-ede-cbc', $key, OPENSSL_RAW_DATA, $iv); return $decrypted;}
// 示例$key='12345678'; // 密钥$iv='abcdefgh'; // 初始化向量$data='Hello, world!'; // 待加密数据
// 加密$encrypted=des_ede_cbc_encrypt($data, $key, $iv);echo 'Encrypted: ' . $encrypted . PHP_EOL;
// 解密$decrypted=des_ede_cbc_decrypt($encrypted, $key, $iv);echo 'Decrypted: ' . $decrypted . PHP_EOL;?>
注意:在实际应用中,请确保密钥和初始化向量(IV)的安全,避免泄露。
本篇文章给大家介绍一下PHP7中使用“DES-EDE-CBC”加解密的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
1. 条件约束之前PHP5上常使用的mcrypt库在PHP7.1+上已经被移除,故我们采用openssl对数据进行加解密。
加密方式采用DES-EDE-CBC方式。
密钥填充方式为:采用24位密钥,先将key进行MD5校验取值,得出16位字串,再取key MD5校验值前8位追加到先前的取值后面。由此组装出24位的密钥。
2. 代码分享<?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. 一点说明
可以根据实际情况调整加密方式、key的填充方式、及iv向量来满足不同的需求。
推荐学习:php视频教程

