PHP7中如何实现DES-EDE-CBC加密解密操作?

2026-04-05 16:021阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计559个文字,预计阅读时间需要3分钟。

PHP7中如何实现DES-EDE-CBC加密解密操作?

本文简要介绍PHP7中使用DES-EDE-CBC加密解密的方法。该方法具有一定的参考价值,如有需要,可参考相关资料。

1. 条件限制PHP7.1及以上版本不再支持mcrypt库,因此使用DES-EDE-CBC加密解密时,需使用OpenSSL库。

2. 常用加密解密函数- 加密函数:openssl_encrypt()- 解密函数:openssl_decrypt()

3. 示例代码php

// 解密$decrypted=openssl_decrypt($encrypted, 'DES-EDE-CBC', $key, OPENSSL_RAW_DATA, $iv);echo '解密后:' . $decrypted . \n;?>

4. 参考资料及帮助- OpenSSL官方文档:https://www.openssl.org/docs/man1.1.1/man1/openssl_encrypt.- PHP官方文档:https://www.php.net/manual/zh/function.openssl-encrypt.php

希望对大家有所帮助!

本篇文章给大家介绍一下PHP7中使用“DES-EDE-CBC”加解密的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

1. 条件约束

之前PHP5上常使用的mcrypt库在PHP7.1+上已经被移除,故我们采用openssl对数据进行加解密。

加密方式采用DES-EDE-CBC方式。

密钥填充方式为:采用24位密钥,先将key进行MD5校验取值,得出16位字串,再取key MD5校验值前8位追加到先前的取值后面。由此组装出24位的密钥。

PHP7中如何实现DES-EDE-CBC加密解密操作?

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向量来满足不同的需求。

本文共计559个文字,预计阅读时间需要3分钟。

PHP7中如何实现DES-EDE-CBC加密解密操作?

本文简要介绍PHP7中使用DES-EDE-CBC加密解密的方法。该方法具有一定的参考价值,如有需要,可参考相关资料。

1. 条件限制PHP7.1及以上版本不再支持mcrypt库,因此使用DES-EDE-CBC加密解密时,需使用OpenSSL库。

2. 常用加密解密函数- 加密函数:openssl_encrypt()- 解密函数:openssl_decrypt()

3. 示例代码php

// 解密$decrypted=openssl_decrypt($encrypted, 'DES-EDE-CBC', $key, OPENSSL_RAW_DATA, $iv);echo '解密后:' . $decrypted . \n;?>

4. 参考资料及帮助- OpenSSL官方文档:https://www.openssl.org/docs/man1.1.1/man1/openssl_encrypt.- PHP官方文档:https://www.php.net/manual/zh/function.openssl-encrypt.php

希望对大家有所帮助!

本篇文章给大家介绍一下PHP7中使用“DES-EDE-CBC”加解密的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

1. 条件约束

之前PHP5上常使用的mcrypt库在PHP7.1+上已经被移除,故我们采用openssl对数据进行加解密。

加密方式采用DES-EDE-CBC方式。

密钥填充方式为:采用24位密钥,先将key进行MD5校验取值,得出16位字串,再取key MD5校验值前8位追加到先前的取值后面。由此组装出24位的密钥。

PHP7中如何实现DES-EDE-CBC加密解密操作?

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向量来满足不同的需求。