前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP 基于 Mcrypt 的加密解密简单类

PHP 基于 Mcrypt 的加密解密简单类

作者头像
Denis
发布2023-04-15 10:26:39
5570
发布2023-04-15 10:26:39
举报
文章被收录于专栏:WordPress果酱

最近的一个项目项目中需要对 Cookie 加密,所以使用到了 Mcrypt 的方法进行加密解密的工作,于是我就整理成一个简单的类,以后直接简单调用类实现即可。

Mcrypt 介绍

Mcrypt 是 PHP 的一个扩展,完成了常用加密算法的封装,mcrypt 库提供了对多种块算法的支持, 包括:DES,TripleDES,Blowfish (默认), 3-WAY,SAFER-SK64,SAFER-SK128,TWOFISH,TEA,RC2 以及 GOST,并且支持 CBC,OFB,CFB 和 ECB 密码模式。 甚至它还支持诸如 RC6 和 IDEA 这两种“非免费”的算法。

可以使用 mcrypt_list_modes() 函数列出当前环境支持的模式,以及使用 mcrypt_list_algorithms() 列出当前环境支持的算法。

简单的 Mcrypt 的加密解密类

下面创建一个简单的类,默认使用 RIJNDAEL_256 算法和 ECB 模式,当然也可以传递其他的算法和模式进去。

代码语言:javascript
复制
Class WPJAM_Mcrypt{
	private $key;
	private $algorithm				= MCRYPT_RIJNDAEL_256;
	private $algorithm_directory	= '';
	private $mode 					= MCRYPT_MODE_ECB;
	private $mode_directory			= '';

	public function __construct($key, $args=array()){
		$this->key					= $key;
		$this->algorithm			= isset($args['$algorithm'])?$args['$algorithm']:$this->algorithm;
		$this->algorithm_directory	= isset($args['$algorithm_directory'])?$args['$algorithm_directory']:$this->algorithm_directory;
		$this->mode					= isset($args['$mode'])?$args['$mode']:$this->mode;
		$this->mode_directory		= isset($args['$mode_directory'])?$args['$mode_directory']:$this->mode_directory;
	}

	public function encrypt($text){
		$module		= mcrypt_module_open($this->algorithm, $this->algorithm_directory, $this->mode, $this->mode_directory);
		$iv_size	= mcrypt_enc_get_iv_size($module);
		$iv			= mcrypt_create_iv($iv_size, MCRYPT_RAND);

		mcrypt_generic_init($module, $this->key, $iv);

		$encrypted_text	= mcrypt_generic($module, $text);
		mcrypt_generic_deinit($module);
		mcrypt_module_close($module);
		return trim(base64_encode($encrypted_text));
	}

	public function decrypt($encrypted_text){
		$encrypted_text	= base64_decode($encrypted_text);

		$module		= mcrypt_module_open($this->algorithm, $this->algorithm_directory, $this->mode, $this->mode_directory);
		$iv_size	= mcrypt_enc_get_iv_size($module);
		$iv			= mcrypt_create_iv($iv_size, MCRYPT_RAND);

		mcrypt_generic_init($module, $this->key, $iv);

		$decrypted_text	= mdecrypt_generic($module, $encrypted_text);
		return trim($decrypted_text);
	}
}

使用方法非常简单:

代码语言:javascript
复制
//首先创建类
$wpjam_mcrypt	= new WPJAM_Mcrypt('t12d3uBDDVy9eC836r76VKlBvtEFzizz');

$plain_text	= '要加密的文字';
$encrypted_text	= $wpjam_mcrypt->encrypt($plgin_text); // 加密

$decrypted_text	= $wpjam_mcrypt->decrypted($encrypted_text); // 解密

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mcrypt 介绍
  • 简单的 Mcrypt 的加密解密类
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档