Heim  >  Artikel  >  Backend-Entwicklung  >  mcrypt_encrypt异常如何 解决

mcrypt_encrypt异常如何 解决

WBOY
WBOYOriginal
2016-06-13 12:16:082011Durchsuche

mcrypt_encrypt错误怎么 解决
目前项目中的一个密码对接放在正式环境之后出现了问题,
原因是在PHP5.6以上的版本中修改了mcrypt_encrypt和mcrypt_decrypt,
有人知道在新版本的PHP中应该怎么使用这两个方法吗?

<br />protected function encrypt($string) {<br />		//加密用的密钥文件 <br />		$key = md5("xxxxxxxx");<br />		//加密方法 <br />		$cipher_alg = MCRYPT_TRIPLEDES;<br />		//初始化向量来增加安全性 <br />		$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND); <br />		//开始加密 <br />		$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);<br />		var_dump($encrypted_string);<br />		return base64_encode($encrypted_string);//转化成16进制<br />    }<br />protected function decrypt($string) {<br />		$string = base64_decode($string);<br />		//加密用的密钥文件 <br />		$key = md5("xxxxxxxx");<br />		//加密方法 <br />		$cipher_alg = MCRYPT_TRIPLEDES;<br />		//初始化向量来增加安全性 <br />		$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND); <br />		//开始解密 <br />		$decrypted_string = mcrypt_decrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv); <br />		return $decrypted_string;<br />    }<br />

------解决思路----------------------
你的代码是有问题的(php 5.4.31)
会有 Size of key is too large for this algorithm  信息出现:键的尺寸太大
不用 MD5 则可正常

而在 php 5.6.3 中
不用 MD5 时的错误信息是:Key of size 8 not supported by this algorithm. Only keys of size 24 supported 
用 MD5 时的错误信息是:Key of size 32 not supported by this algorithm. Only keys of size 24 supported 
所以你只需调整key 的长度为 24 即可

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn