PHP实现的DES加密解密类定义与用法示例
脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用
本文实例讲述了PHP实现的DES加密解密类定义与用法。分享给大家供大家参考,具体如下:
今天写App接口的时候需要传递加密数据给APP端,于是就写了下面的DES加密类,亲测正确代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | class CryptDes { function __construct(){ $this ->key = 'codelovers' ; //密钥 $this ->iv = '15548632' ; //偏移量 } /* * 加密 */ function encrypt( $input ){ $size = mcrypt_get_block_size(MCRYPT_DES,MCRYPT_MODE_CBC); //3DES加密将MCRYPT_DES改为MCRYPT_3DES $input = $this ->pkcs5_pad( $input , $size ); //如果采用PaddingPKCS7,请更换成PaddingPKCS7方法。 $key = str_pad ( $this ->key,8, '0' ); //3DES加密将8改为24 $td = mcrypt_module_open(MCRYPT_DES, '' , MCRYPT_MODE_CBC, '' ); if ( $this ->iv == '' ) { $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size( $td ), MCRYPT_RAND); } else { $iv = $this ->iv; } @mcrypt_generic_init( $td , $key , $iv ); $data = mcrypt_generic( $td , $input ); mcrypt_generic_deinit( $td ); mcrypt_module_close( $td ); $data = base64_encode ( $data ); //如需转换二进制可改成 bin2hex 转换 return $data ; } /* * 解密 */ function decrypt( $encrypted ){ $encrypted = base64_decode ( $encrypted ); //如需转换二进制可改成 bin2hex 转换 $key = str_pad ( $this ->key,8, '0' ); //3DES加密将8改为24 $td = mcrypt_module_open(MCRYPT_DES, '' ,MCRYPT_MODE_CBC, '' ); //3DES加密将MCRYPT_DES改为MCRYPT_3DES if ( $this ->iv == '' ) { $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size( $td ), MCRYPT_RAND); } else { $iv = $this ->iv; } $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_DES, MCRYPT_MODE_CBC); //3DES加密将MCRYPT_DES改为MCRYPT_3DES $padding_char = $block_size - ( strlen ( $data ) % $block_size ); $data .= str_repeat ( chr ( $padding_char ), $padding_char ); return $data ; } } |
用法如下:
1 2 3 4 5 6 | $str = 'www.jb51.net' ; $des = new CryptDes(); $mres = $des ->encrypt( $str ); //加密 echo $mres . "<br/>" ; $jres = $des ->decrypt( $mres ); //解密 echo $jres . "<br/>" ; |
运行结果:
TxqbmhK86YWdTtTAQoDOqA==
www.jb51.net
附录:php7 des加密解密
以下内容转自:https://blog.csdn.net/qq_35979073/article/details/81449590
1.在linux 环境中如果没有装encrypt扩展 或者php版本大于7.1不支持encrypt加密扩展
可以使用openssl加密扩展
下面是封装的加密和解密的方法可直接调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /** * des-ecb加密 * @param string $data 要被加密的数据 * @param string $key 加密密钥(64位的字符串) */ function des_ecb_encrypt( $data , $key ){ return openssl_encrypt ( $data , 'des-ecb' , $key ); } /** * des-ecb解密 * @param string $data 加密数据 * @param string $key 加密密钥 */ function des_ecb_decrypt ( $data , $key ){ return openssl_decrypt ( $data , 'des-ecb' , $key ); } |
说明: $key 加密密钥(64位的字符串) 自己定义的
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
在线DES加密/解密工具
http://tools.jb51.net/password/des_encode
MD5在线加密工具:
http://tools.jb51.net/password/CreateMD5Password
在线散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php加密方法总结》、《PHP编码与转码操作技巧汇总》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》及《php正则表达式用法总结》
希望本文所述对大家PHP程序设计有所帮助。
- 六种php加密解密方法实例讲解
- PHP rsa加密解密算法原理解析
- 基于PHP实现解密或加密Cloudflar邮箱保护
- php中加密解密DES类的简单使用方法示例
- php的RSA加密解密算法原理与用法分析
- RSA实现JS前端加密与PHP后端解密功能示例
- Js通过AES加密后PHP用Openssl解密的方法
- PHP实现的AES双向加密解密功能示例【128位】
- PHP实现的XXTEA加密解密算法示例
- PHP实现基于3DES算法加密解密字符串示例
- PHP实现的AES加密、解密封装类与用法示例
- 基于PHP RSA密文过长加密解密 越过1024的解决方法
- PHP的RSA加密解密方法以及开发接口使用
- PHP使用自定义key实现对数据加密解密的方法
- php实现的三个常用加密解密功能函数示例
- PHP代码加密和扩展解密实战
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
腾讯微博提示missing parameter errorcode 102 错误的解决方法
这篇文章主要介绍了腾讯微博提示missing parameter errorcode 102 错误的解决方法,是针对腾讯微博接口开发中比较典型的错误问题,需要的朋友可以参考下2014-12-12
最新评论