Home >Backend Development >PHP Tutorial >PHP DES加密解密

PHP DES加密解密

WBOY
WBOYOriginal
2016-06-23 13:43:55775browse

这是一段 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;     }


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn