des php加密,PHP使用DES进行数据加密和解密方法详解

今天给客户做网站数据接口的时候遇到了一个问题,客户要求接口数据进行加密防止他人盗用。对于php数据加密大部分朋友第一时间想到的应该是md5加密,但md5是单向加密并不提供解密方法,显然这个函数是不可用的。经过网上一番搜索发现,PHP常用的数据加密解密算法是DES。使用方法就是双方设置一个相同的密钥,然后使用该密钥进行加密解密。在使用DES的时候,首先需要将此扩展开启,方法如下:

php中有一个扩展可以支持DES的加密算法,是:extension=php_mcrypt.dll

在配置文件中将这个扩展打开还不能够在windows环境下使用,需要将PHP文件夹下的 libmcrypt.dll 拷贝到系统的

system32 目录下,这是通过phpinfo可以查看到mcrypt表示这个模块可以正常试用了。

具体的函数代码如下,需要的朋友可以参考下:

加密函数do_mencrypt

//$input - stuff to decrypt

//$key - the secret key to usefunctiondo_mencrypt($input,$key)

{$input=str_replace(""n","",$input);$input= str_replace(""t","",$input);$input=str_replace(""r","",$input);$key= substr(md5($key), 0, 24);$td= mcrypt_module_open('tripledes', '', 'ecb', '');$iv= mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

mcrypt_generic_init($td,$key,$iv);$encrypted_data= mcrypt_generic($td,$input);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

return trim(chop(base64_encode($encrypted_data)));

}

解密函数 do_mdecrypt

//$input- stuff to decrypt

//$key- the secret key to use

function do_mdecrypt($input,$key)

{$input= str_replace(""n","",$input);$input=str_replace(""t","",$input);$input= str_replace(""r","",$input);$input=trim(chop(base64_decode($input)));$td=mcrypt_module_open('tripledes','','ecb','');$key=substr(md5($key),0,24);$iv=mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);

mcrypt_generic_init($td,$key,$iv);$decrypted_data=mdecrypt_generic($td,$input);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);returntrim(chop($decrypted_data));

为了让朋友们更深入的了解该函数的使用方法,下面我们来做一个例子:

$new =do_mencrypt("wo shi

old","111");

$old = do_mdecrypt($new,"111");

echo $new."的明文是:"."
";

echo $old;

运行的结果为:

bnF+S42hS0BzXqMwPJJN82yBa4/DiYoYcTGmt0TotwY=的明文是:wo shi

old

注:加密或解密时一定要注意$key的值,加密后要想解密就必须要知道$key的值,不然不能解出正确的明文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值