# 二、PHP 3des 加密类
> 类库如下,简单粗暴
```
<?php
namespace test;
/**
* 3DES加解密
* @Author: 兽医
* @version: v1.8
* 2017年5月23日
*/
class Encrypt
{
public $key = "加密解密的密码,任意字符串";
<span class="token2">function Crypt3Des($key){
$this->key=$key;
}
//数据加密
<span class="token2">function encrypt($input){
$size = mcrypt_get_block_size(MCRYPT_3DES,'ecb');
$input = $this->pkcs5_pad($input, $size);
$key = str_pad($this->key,24,'0');
$td = mcrypt_module_open(MCRYPT_3DES, '', 'ecb', '');
$iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
@mcrypt_generic_init($td, $key, $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
<span class="token2">return $data;
}
//数据解密
<span class="token2">function decrypt($encrypted){
$encrypted = base64_decode($encrypted);
$key = str_pad($this->key,24,'0');
$td = mcrypt_module_open(MCRYPT_3DES,'','ecb','');
$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);
@mcrypt_generic_init($td, $key, $iv);
$decrypted = mdecrypt_generic($td, $encrypted);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$y=$this->pkcs5_unpad($decrypted);
<span class="token2">return $y;
}
<span class="token2">function pkcs5_pad ($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
<span class="token2">return $text . str_repeat(chr($pad), $pad);
}
<span class="token2">function pkcs5_unpad($text){
$pad = ord($text{strlen($text)-1});
<span class="token2">if ($pad > strlen($text)) {
<span class="token2">return false;
}
<span class="token2">if (strspn($text, chr($pad), strlen($text) - $pad) != $pad){
<span class="token2">return false;
}
<span class="token2">return substr($text, 0, -1 * $pad);
}
}
```
> 调用方法
```
date_default_timezone_set('PRC');
include "demo.php"; //引入这个类
$encrypt = <span class="token2">new \test\Encrypt();
###加密
$param = "rewrewrwerwerewrwerffdvdsfsd";
$res = $encrypt->encrypt($param);
$res = $encrypt->decrypt($res);
```
- 一、php封装pdo操作类
- 二、PHP 3des 加密类
- 三、PHP 调用webserver服务器详解
- 四、命名空间的USE 和 require include require_once include_once详解
- 五、thinkphp集成小米推送
- 六、PHP实现上传文件进度条
- 七、PHP根据地址新建路径下载地址文件
- 八、PHP使用AJAX上传图片即时预览
- 九、强制CDN更新静态资源文件
- 十、THINKPHP集成支付宝APP支付并提供接口
- 十一、THINKPHP集成支付宝APP支付 错误详解 支付宝APP支付 显示 系统繁忙 请稍后再试 ALI40247 dengg
- 十二、PHP生成二维码图片或带logo的二维码
- 十三、蛋疼的bom头 恶心了我好久[json无法解析]
- 十四、php windows安装imagick扩展
- 十五、windows下Composer的安装与使用
- 十六、[2017]最新支付宝wap支付集成THINKPHP3.2.3 demo
- 十七、VUE.JS 安装与发布
- 十八、PHP 执行 linux 命令行 操作示例
- 十九、关于CSP 减少XSS攻击的介绍