[php]php中3DES加密一个非常有用的3des加密
这是一个非常有用的3des加密,在多数情况下可以直接拿来用。很不错哦~!
这是一个非常有用的3des加密,在多数情况下可以直接拿来用。很不错哦~!
- <?php
- class Crypt3Des {
- public $key = "bugaosuni"; // 这个根据实际情况写
- 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 );
- return $data;
- }
- 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 );
- return $y;
- }
- function pkcs5_pad($text, $blocksize) {
- $pad = $blocksize - (strlen ( $text ) % $blocksize);
- return $text . str_repeat ( chr ( $pad ), $pad );
- }
- function pkcs5_unpad($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 );
- }
- function PaddingPKCS7($data) {
- $block_size = mcrypt_get_block_size ( MCRYPT_3DES, MCRYPT_MODE_CBC );
- $padding_char = $block_size - (strlen ( $data ) % $block_size);
- $data .= str_repeat ( chr ( $padding_char ), $padding_char );
- return $data;
- }
- }
- $rep = new Crypt3Des (); // 初始化一个对象
- $input = "hello worldfdfdfdfdd";
- echo "原文:" . $input . "<br/>";
- $encrypt_card = $rep->encrypt ( $input );
- echo "加密:" . $encrypt_card . "<br/>";
- echo "解密:" . $rep->decrypt ( $rep->encrypt ( $input ) );
- ?>
因为工作中要用到加密,接口中要求也是用密文传输数据,用到3des加密,就研究了一下。
在网上也找了好多,但是都不可以用,没法正式运行,终于找到一个可以运行的,自己又修改了一下,记录下来,以后还可能会用到。
下面安装我要调用的接口文实例:
在调用PHP中的mcrypt_get_block_size()函数时需要:
启用Mcrypt函数集。linux下要安装libmcrypt,windows下找到php.ini文件里
extension=php_mcrypt.dll
extension=php_mcrypt_filter.dll
接口要求:
先用3DES对数据进行加密,在用BASE64进行加密。即:BASE64(3DES(value))。
热门文章推荐
- [php]优酷真实视频地址解析算法
- [Dz]discuz手机版支持视频播放的方法
- [PHP]php加密js解密的方法实例
- [php]用PHP打印出前一天的时间格式
- [PHP]mpeg,mp3,avi的ffmpeg的php转换类
- [php]php中3DES加密一个非常有用的3des加密
- [PHP]php.ini修改上传文件的大小限制处理方法
- [php]用过的最好用的php分页类源代码
请稍候...