# 二、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攻擊的介紹