5.2. PHP

5.2.1。AES / ECB / PKCS5Padding

<?php class CryptAES {protected $ cipher = MCRYPT_RIJNDAEL_128; 受保护的$ mode = MCRYPT_MODE_ECB; 保护$ pad_method = NULL; 保护$ secret_key =''; 保护$ iv =''; public function set_cipher($ cipher){$ this-> cipher = $ cipher; } public function set_mode($ mode){$ this-> mode = $ mode; } public function set_iv($ iv){$ this-> iv = $ iv; } public function set_key($ key){$ this-> secret_key = $ key; } public function require_pkcs5(){$ this-> pad_method ='pkcs5'; }保护函数pad_or_unpad($ str,$ ext){if(is_null($ this-> pad_method)){return $ str; }其他{$ func_name = __CLASS__。'::'。$ this-> pad_method。'_'。$ ext。'垫'; if(is_callable($ func_name)){$ size = mcrypt_get_block_size($ this-> cipher,$ this-> mode); 返回call_user_func($ func_name,$ str,$ size); }} return $ str; ($ str){return $ this-> pad_or_unpad($ str,''); }保护函数unpad($ str){return $ this-> pad_or_unpad($ str,'un'); }公共函数加密($ str){$ str = $ this-> pad($ str); $ td = mcrypt_module_open($ this-> cipher,'',$ this-> mode,''); 如果(空($ this->)iv)){$ iv = @ mcrypt_create_iv(mcrypt_enc_get_iv_size($ td),MCRYPT_RAND); } else {$ iv = $ this-> iv; } mcrypt_generic_init($ td,$ this-> secret_key,$ iv); $ cyper_text = mcrypt_generic($ td,$ str); // $ rt = bin2hex($ cyper_text); $ rt = base64_encode($ cyper_text); mcrypt_generic_deinit($ TD); mcrypt_module_close($ TD); 返回$ rt; ($ str){$ td = mcrypt_module_open($ this-> cipher,'',$ this-> mode,''); if(empty($ this-> iv)){$ iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($ td),MCRYPT_RAND); } else {$ iv = $ this-> iv; } mcrypt_generic_init($ td,$ this-> secret_key,$ iv); // $ decrypted_text = mdecrypt_generic($ td,self :: hex2bin($ str)); $ decrypted_text = mdecrypt_generic($ td,base64_decode($ str)); $ rt = $ decrypted_text; mcrypt_generic_deinit($ TD); mcrypt_module_close($ TD); 返回$ this-> unpad($ rt); } public static function hex2bin($ hexdata){$ bindata =''; $ length = strlen($ hexdata); for($ i = 0; $ i <$ length; $ i + = 2){$ bindata。= chr(hexdec(substr($ hexdata,$ i,2))); } return $ bindata; } public static function pkcs5_pad($ text,$ blocksize){$ pad = $ blocksize - (strlen($ text)%$ blocksize); 返回$文本。str_repeat(chr($ pad),$ pad); } public static function pkcs5_unpad($ text){$ pad = ord($ text {strlen($ text) - 1}); 如果($ pad> strlen($ text))返回false; if(strspn($ text,chr($ pad),strlen($ text) - $ pad)!= $ pad)return false; 返回substr($文本,0,-1 * $垫); }} $ aes = new CryptAES(); $ AES-> set_key( 'NGjPs5cgNS497sdx'); $ AES-> require_pkcs5(); $ rt = $ aes-> encrypt('ABC'); echo $ rt。'<BR/>'; echo $ aes-> decrypt($ rt)。'<BR/>';

原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/325434

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。