php第4课: 数据加密

2019-04-03  本文已影响0人  启蒙时代

php第4课:数据加密

时间 2019-04-03

主讲 刘培富

地点 在线分享,大家自学


前一课,在验证用户提交的用户和密码上,是明文传输的,安全性不高。正式开发项目时,需要把用户的密码进行加密存储,在验证时,对用户提交的密码进行加密,然后再比对。

本文,讲述两种加密方法:

1、md5函数

$str = "Shanghai";

echo md5($str);    //32位小写

echo strtoupper(md5($str));    //32位大写 

echo substr(md5($str),8,16);   //16位小写

echo strtoupper(substr(md5($str),8,16))   //16位大写

按照md5加密的通用规范,生成密文。好处是不管长短、不管是否包含汉字,都可以,统一生成16位或32位的密文,且不可逆。

2、自定义加密函数

function encrypt($data, $key)

{

$data=iconv("gbk","utf-8",$data);

$key = md5($key);

  $x = 0;

$char=$str="";

  $len = strlen($data);

  $l = strlen($key);

  for ($i = 0; $i < $len; $i++)

  {

    if ($x == $l)

    {

    $x = 0;

    }

    $char .= $key{$x};

    $x++;

  }

  for ($i = 0; $i < $len; $i++)

  {

    $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);

  }

  return base64_encode($str);

}

$key = 'liupeifu';  // 密钥

echo encrypt("aaa",$key);

这个方法,好处是有密钥做参数,安全性更高。缺点是不能用汉字,且字符串过长时,加密后的字符也很长。

一般来说,推荐方法一,对于安全性要求较高的,推荐方法二。

上一篇下一篇

猜你喜欢

热点阅读