PHPOpenSSL加密
2021/9/15 13:04:57
本文主要是介绍PHPOpenSSL加密,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
加密类
两个解密类用哪个都可以
类1:
<?php // error_reporting(E_ALL || ~E_NOTICE); class Encrypt { /** * var string $method 加解密方法,可通过openssl_get_cipher_methods()获得 */ private $method; /** * var string $secret_key 加解密的密钥 */ private $key; /** * var string $iv 加解密的向量,有些方法需要设置比如CBC */ private $iv; /** * var string $options (不知道怎么解释,目前设置为0没什么问题) */ private $options; /** * 构造函数 * * @param string $key 密钥 * @param string $method 加密方式 * @param mixed $options openssl_簇 * @param string $iv iv向量 * */ public function __construct($key = 'vxfw2hvftmna6ux3', $method = 'AES-128-ECB', $options = 0, $iv = 'tmna') { $this->key = $key; $this->method = $method; $this->options = $options; $this->iv = $iv; } /** * 加密方法,对数据进行加密,返回加密后的数据 * * @param string $data 要加密的数据 * @return string */ public function encrypt($data) { return openssl_encrypt($data, $this->method, $this->key, $this->options); } /** * 解密方法,对数据进行解密,返回解密后的数据 * * @param string $data 要解密的数据 * @return string */ public function decrypt($data) { return openssl_decrypt($data, $this->method, $this->key, $this->options); } }
类2:
<?php class ApUtilOpensslCrypt { //密匙 var $key = NULL; var $algorithm = NULL; var $mode = NULL; function __construct($key = "vxfw2hvf") { //初始化密匙 $this->key = ($key != "") ? $key : ""; //加密算法 $this->algorithm = 'AES-128-ECB'; //加密模式 $this->mode = OPENSSL_RAW_DATA; } /** * * @param string $data 需要加密的字符串 * @return string */ public function encrypt($data) { return openssl_encrypt($data,$this->algorithm,$this->key); $data = $this->base64_url_encode(openssl_encrypt($data,$this->algorithm,$this->key)); return $data; } /** * @param string $data 需要解密的字符串 * @return string */ public function decrypt($data) { return openssl_decrypt($this->base64_url_decode($data), $this->algorithm, $this->key, $this->mode); $decrypted = openssl_decrypt($this->base64_url_decode($data), $this->algorithm, $this->key, $this->mode); return $decrypted; } public function base64_url_encode($input) { return strtr($input, '+/=', '-_,'); } public function base64_url_decode($input) { return base64_decode(strtr($input, '-_,', '+/=')); } }
用法:
$en_two_str = "Ed3MFQFVRRgO4Rz+hZVwtQ=="; //如果类在外部(没和用法在同一个文件里面),需要先引入类 // $aaa = new Encrypt(); // echo "加密前:".$str."\n"; // $en_str = $aaa->encrypt($str); // echo "加密后:".$en_str."\n"; // echo "解密后:".$aaa->decrypt($en_str)."\n"; // echo "------------------------------"."\n"; $bbb = new ApUtilOpensslCrypt(); // echo "加密前:".$str."\n"; // $en_two_str = $bbb->encrypt($str); // echo "加密后:".$en_two_str."\n"; echo "解密后:".$bbb->decrypt($en_two_str);
这篇关于PHPOpenSSL加密的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享