PHP des 3des加解密
来源:互联网 发布:松视台在线直播软件 编辑:程序博客网 时间:2024/05/21 05:05
开启Mcrypt扩展,获取mcrypt的加密算法与模式列表:
$cipher_list = mcrypt_list_algorithms();//mcrypt支持的加密算法列表 $mode_list = mcrypt_list_modes(); //mcrypt支持的加密模式列表 echo '<xmp>'; print_r($cipher_list); print_r($mode_list); echo '</xmp>';
封装了一个DES加解密的类 适用于MCRYPT_RIJNDAEL_128,3DES算法,PKCS7填充 其它未测
使用时记得更改算法与模式,将其中的MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC替换即可
<?phpclass StdDes{ private $key = ""; private $iv = ""; /** * 构造,传递二个已经进行base64_encode的KEY与IV * * @param string $key * @param string $iv */ function __construct($key, $iv) { if (empty($key) || empty($iv)) { echo 'key and iv is not valid'; exit(); } $this->key = $key; $this->iv = $iv; } /** *加密 * @param <type> $value * @return <type> */ public function encrypt($value) { $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $iv = base64_decode($this->iv); $value = $this->PaddingPKCS7($value); $key = base64_decode($this->key); mcrypt_generic_init($td, $key, $iv); $ret = base64_encode(mcrypt_generic($td, $value)); mcrypt_generic_deinit($td); mcrypt_module_close($td); return $ret; } /** *解密 * @param <type> $value * @return <type> */ public function decrypt($value) { $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); $iv = base64_decode($this->iv); $key = base64_decode($this->key); mcrypt_generic_init($td, $key, $iv); $ret = trim(mdecrypt_generic($td, base64_decode($value))); $ret = $this->UnPaddingPKCS7($ret); mcrypt_generic_deinit($td); mcrypt_module_close($td); return $ret; } private function PaddingPKCS7($data) { $block_size = mcrypt_get_block_size('tripledes', 'cbc'); $padding_char = $block_size - (strlen($data) % $block_size); $data .= str_repeat(chr($padding_char), $padding_char); return $data; } private function UnPaddingPKCS7($text) { $pad = ord($text{strlen($text) - 1}); if ($pad > strlen($text)) { return false; } if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) { return false; } return substr($text, 0, -1 * $pad); }}/*//使用include('StdDes.class.php');$key = 'abcdefgh';$iv = 'abcdefgh';$msg = 'test string';$des = new StdDes(base64_encode($key), base64_encode($iv));$rs1 = $des->encrypt($msg);echo $rs1 . '<br />';$rs2 = $des->decrypt($rs1);echo $rs2;*/?>
0 0
- PHP des 3des加解密
- 3DES 加解密 PHP版
- php 3des 加解密的整理
- DES、3DES 加解密;MAC算法
- 关于DES加解密,3DES加解密
- java 3DES 加解密
- openssl 3des 加解密
- iOS 3DES加解密
- 3DES加解密案例
- 3DES加解密算法
- 3DES加解密-EncryptAndDecryptFile
- 3DES加解密-KTDes3Tool
- 3DES加解密-ZipCompressor
- 3Des加解密,压缩文件
- php解密之DES/3DES
- php 的 3des加解密类,兼容C#/java
- PHP与C#通用 DES 加解密
- DES加解密
- sqlite3_reset作用
- webview返回键问题
- server.xml之keepAliveTimeout与connectionTimeout
- 最大流介绍
- Java基础练习题 (1)语法基础
- PHP des 3des加解密
- pip 下载慢 超时
- 【GYM】101170H Hamiltonian Hypercube
- SPDK SRIOV VIRTIO
- Linux文件目录解析
- 欢迎使用CSDN-markdown编辑器
- 【Unity3D】键盘鼠标控制视角的移动
- easyui combotree 异步数据源 设置默认值
- iOS设置自定义全局返回按钮