PHP项目中mcrypt加密如何实现,代码是什么
Admin 2022-08-16 群英技术资讯 505 次浏览
PHP中mcrypt加密实例如下:
<?php //当前mcrypt支持的加密模型 $modes_list = mcrypt_list_modes(); // Array // ( // [0] => cbc // [1] => cfb // [2] => ctr // [3] => ecb // [4] => ncfb // [5] => nofb // [6] => ofb // [7] => stream // ) //当前mcrypt支持的算法 $algorithms_list = mcrypt_list_algorithms(); // Array // ( // [0] => cast-128 // [1] => gost // [2] => rijndael-128 // [3] => twofish // [4] => cast-256 // [5] => loki97 // [6] => rijndael-192 // [7] => saferplus // [8] => wake // [9] => blowfish-compat // [10] => des // [11] => rijndael-256 // [12] => serpent // [13] => xtea // [14] => blowfish // [15] => enigma // [16] => rc2 // [17] => tripledes // [18] => arcfour // ) $key = "this is secret key"; $input = "Let us meet at 9 o'clock at the secret place"; //加密过程 $td = mcrypt_module_open('tripledes','','ecb','');//设置加密模式和算法 $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);// 创建iv(初始化向量) mcrypt_generic_init($td,$key,$iv);// 根据密钥和iv初始化$td,完成内存分配等初始化工作 $encrypted_data = mcrypt_generic($td,$input);// 进行加密 mcrypt_generic_deinit($td);// 反初始化$td,释放资源 mcrypt_module_close($td); //解密过程 $td = mcrypt_module_open('tripledes','','ecb',''); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND); mcrypt_generic_init($td,$key,$iv); $decrypted_data = mdecrypt_generic($td,$encrypted_data); mcrypt_generic_deinit($td); mcrypt_module_close($td); /** * 一个简单功能的加密解密类 * @author LHL 2016.08.03 */ class Mcrypt { /** * 获取key */ private static function getKey(){ return md5('exampleKey'); } /** * 加密方法 */ public static function encrypt($value){ $td = mcrypt_module_open('tripledes','','ecb',''); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_DEV_RANDOM); $key = substr(self::getKey(),0,mcrypt_enc_get_key_size($td)); mcrypt_generic_init($td,$key,$iv); $ret = base64_encode(mcrypt_generic($td,$value)); mcrypt_generic_deinit($td); mcrypt_module_close($td); return $ret; } /** * 解密方法 */ public static function dencrypt($value){ $td = mcrypt_module_open('tripledes','','ecb',''); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_DEV_RANDOM); $key = substr(self::getKey(), 0, mcrypt_enc_get_key_size($td)); mcrypt_generic_init($td, $key, $iv); $ret = trim(mdecrypt_generic($td, base64_decode($value))) ; mcrypt_generic_deinit($td); mcrypt_module_close($td); return $ret; } } $sec = Mcrypt::encrypt('abc'); echo Mcrypt::dencrypt($sec);
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
laravel数据传递给vue有哪些方法?一些朋友对于这个问题比较感兴趣的,下面小编就给大家介绍四种不同的方法从一个到另一个获取数据。感兴趣的朋友就继续往下看吧。
本栏目讲解一个高性能、简单、跨平台的PHP7代码加密扩展,有需要的朋友可以看看,一起学习讨论。
单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。提示:数据库连接池的设计一般也是采用单例模式,因为数据库连接是一种数据库资源。数据库软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的,因此用单例模式来维护,就可以大大降低这种损耗。
sleep()是PHP的内置函数。用来延迟给定的秒数来执行程序。该函数只接受一个参数,必须传输该参数。$seconds参数表示以秒为单位的延迟时间。
Workerman是一款开源高性能异步PHP socket即时通讯框架。支持高并发,超高稳定性,被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008