Heim >Backend-Entwicklung >PHP-Tutorial >PHP DES加密解密

PHP DES加密解密

WBOY
WBOYOriginal
2016-06-23 13:43:55781Durchsuche

这是一段 DES 解密的 PHP 代码。 

参考自 http://php.net/manual/zh/function.mcrypt-module-open.php 中的例程。 本来也 没有什么难的。 

但是我 解密 完 后 反复试,都是下面 这样的不可见 的乱码。

? ?]Y)?aw#?Y?????]m?/m?2??]C??f??V(?I?????~????? ?e=i"C??????


搞了大半天才 发现,是因为 对方 加密完之后 ,把二进制的 密文 转换成 十六进制的 给我传了过来 ,如13BD5122F55E706D13FB7D0F349A787D19E9D2334E268A15

大家看清楚啊, 这个可不能当作 密文本身 ,我就只因为 直接解密 这个 16进制的字符串 所以才 无法解密的。 需要 先把这个 16进制的 字符串 传化 回 二进制的 模样,再用 解密方法解密 ,就可以看到明文了 。

十六进制 转 二进制 的方法 是hex2bin

cryptare 这个函数 是 加密解密用的 ,第一个参数是 明文或者密文, 第二个参数是key, 第三个参数 0 表示 解密,1就是 加密。

注: 加密的时候可能用不到  $text = $this->hex2bin($text); 这一句。


    function hex2bin($hexData)     {        $binData = "";        for($i = 0; $i hex2bin($text);        $encrypted_data="";         $td = mcrypt_module_open('des', '', 'ecb', '');                         $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);         mcrypt_generic_init($td, $key, $iv);         if($crypt)         {               $encrypted_data = mcrypt_generic($td, $text);         print $encrypted_data ;        }               else            {               $encrypted_data = mdecrypt_generic($td, $text);         }               mcrypt_generic_deinit($td);         mcrypt_module_close($td);         return $encrypted_data;     }


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