当前位置: 首页 > 后端技术 > PHP

PHP使用mcrypt函数封装加密类

时间:2023-03-30 02:46:18 PHP

PHP程序员在编写代码程序时,除了要保证代码的高性能外,还有一点非常重要,那就是程序的安全性。除了PHP自带的几个加密函数外,还有更全面的PHP加密扩展库Mcrypt和Mhash。其中Mcrypt扩展库可以实现加解密功能,即既可以加密明文,又可以恢复密文。Mcrypt函数mcrypt_cbc——在CBC模式下加密和解密数据mcrypt_cfb——在CFB模式下加密和解密数据mcrypt_create_iv——从随机源创建初始化向量mcrypt_decrypt——使用给定参数解密密文mcrypt_ecb——已弃用:在ECB模式下加密和解密数据mcrypt_enc_get_algorithms_name——返回打开算法的名称mcrypt_enc_get_block_size——返回打开算法的块大小mcrypt_enc_get_iv_size——返回打开算法的初始向量大小mcrypt_enc_get_key_size——返回打开模式支持的最长密钥mcrypt_enc_get_modes_name——返回打开模式的名称mcrypt_enc_get_supported_key_sizes——数组返回开启算法支持的密钥长度mcrypt_enc_is_block_algorithm_mode—检测开启方式是否支持块加密mcrypt_enc_is_block_algorithm—检测开启方式算法是否为块算法mcrypt_enc_is_block_mode—检测是否开启方式打开的模式分组输出检查mcrypt_encrypt——给定参数加密明文mcrypt_generic_deinit——清理加密模块mcrypt_generic_end——结束加密mcrypt_generic_init——初始化加密所需的缓冲区mcrypt_generic——加密数据mcrypt_get_block_size——获取加密算法的块大小mcrypt_get_cipher_name——获取加密算法名称mcrypt_size—获取指定算法/模式组合的初始向量大小mcrypt_get_key_size—获取指定加密算法的密钥大小mcrypt_list_algorithms—获取支持的加密算法mcrypt_list_modes—获取支持的模式mcrypt_module_close—关闭加密模块mcrypt_module_get_algo_block_size——返回指定算法的块大小mcrypt_module_get_algo_key_size——获取开放模式支持的最大密钥大小mcrypt_module_get_supported_key_sizes——返回数组中开放算法支持的密钥大小mcrypt_module_is_block_algorithm_mode——返回指定模块是否为块加密模式mcrypt_module_is_block_algorithm——检测指定算法是否为块加密算法mcrypt_module_is_block_mode—检测指定模式是否分组输出mcrypt_module_open—打开算法和模式对应的模块mcrypt_module_self_test—对指定模块进行自检mcrypt_ofb—使用OFB模式加密/decryptdatamdecrypt_generic--解密数据封装加密类代码_secret_key='swtrademark_key';mcrypt_generic_init($td,$this->_secret_key,$iv);$encrypted=mcrypt_generic($td,$data);mcrypt_generic_deinit($td);返回$iv。$加密;}/***解密工具函数*/privatefunctiondecode1($data){$td=mcrypt_module_open(MCRYPT_RIJNDAEL_256,'',MCRYPT_MODE_CBC,'');$iv=mb_substr($data,0,32,'latin1');$this->_secret_key='swtrademark_key';mcrypt_generic_init($td,$this->_secret_key,$iv);$data=mb_substr($data,32,mb_strlen($data,'latin1'),'latin1');$data=mdecrypt_generic($td,$data);mcrypt_generic_deinit($td);mcrypt_module_close($td);返回修剪($数据);}/***替换*/privatefunctionreplace($str){$str1=str_replace('/','*',$str);$str2=str_replace('=','^',$str1);返回str_replace('+','_',$str2);}/***反向替换*/privatefunctionbase64replace($str){$str1=str_replace('*','/',$str);$str2=str_replace('^','=',$str1);返回str_replace('_','+',$str2);}/***加密调用函数*/publicfunctionword_encode($keyWord){$str=$this->encode1($keyWord);返回修剪($this->替换(base64_encode($str)));}/***解密调用函数*/publicfunctionword_decode($keyWord){$str=base64_decode($this->base64replace($keyWord));返回修剪($this->decode1($str));}}/***call*/$str='thisisasecret';//Encrypt$password=Security::getInstance()->word_encode($str);echo$password.'
';//解密echoSecurity::getInstance()->word_decode($password);//结果:(加密后的密码是动态的,实时变化,两次运行结果如下)/***bUxwS2u24waVyrXtMu*vKgsPGWVnjzrFD1na8krUAxZOJuAm7qMO4S_o4MogWL1G82OYhCUjt_uW8phmU_niww^^*这是秘密*//***2A_GIJvNHQ9J9NPpKu6x2wehP4ondYQeU1QJQNKj1Bd9NCDPZz0QbENIXE5_pgbespM5qS78Dj2cfSibgL3vWQ^^*这是秘密*/