菜单

金沙国际PHP内置加密函数详解

2019年3月4日 - 金沙编程资讯

 

 

一、MD5加密

Md5()加密算法

一、MD5加密

一、MD5加密

直白干,那里以1个记名页面为例:

主意: 单向加密

一贯干,那里以四个登录页面为例:

直白干,那里以二个记名页面为例:

<?php
require_once 'config/database.config.php';

$act=$_REQUEST['act'];
$username=$_POST['username'];
$password=md5($_POST['password']);

if ($act=='reg') {
  $sql="INSERT INTO user(username,password) VALUES('{$username}','{$password}')";
  $result=mysqli_query($link, $sql);

  if ($result) {
    echo "Success";
    echo "<meta http-equiv='refresh' content='1;url=login.html'/>";
  }else {
    echo "Failure!";
    echo "<meta http-equiv='refresh' content='1;url=reg.html'/>";
  }
}elseif ($act=='login') {
  $sql="SELECT * FROM user WHERE username='{$username}' AND password='{$password}'";
  $result=mysqli_query($link, $sql);
  $validate=mysqli_fetch_array($result);
  //var_dump($validate);
  if ($validate) {
    echo "success";
    echo "<meta http-equiv='refresh' content='1;url=http://www.baidu.com'/>";
  }else {
    echo "failure";
    echo "<meta http-equiv='refresh' content='1;url=login.html'/>";
  }
}

语法: md5(string $str [, bool $raw_output = false])

<?php
require_once 'config/database.config.php';

$act=$_REQUEST['act'];
$username=$_POST['username'];
$password=md5($_POST['password']);

if ($act=='reg') {
    $sql="INSERT INTO user(username,password) VALUES('{$username}','{$password}')";
    $result=mysqli_query($link, $sql);

    if ($result) {
        echo "Success";
        echo "<meta http-equiv='refresh' content='1;url=login.html'/>";
    }else {
        echo "Failure!";
        echo "<meta http-equiv='refresh' content='1;url=reg.html'/>";
    }
}elseif ($act=='login') {
    $sql="SELECT * FROM user WHERE username='{$username}' AND password='{$password}'";
    $result=mysqli_query($link, $sql);
    $validate=mysqli_fetch_array($result);
    //var_dump($validate);
    if ($validate) {
        echo "success";
        echo "<meta http-equiv='refresh' content='1;url=http://www.baidu.com'/>";
    }else {
        echo "failure";
        echo "<meta http-equiv='refresh' content='1;url=login.html'/>";
    }
}
<?php
require_once 'config/database.config.php';

$act=$_REQUEST['act'];
$username=$_POST['username'];
$password=md5($_POST['password']);

if ($act=='reg') {
    $sql="INSERT INTO user(username,password) VALUES('{$username}','{$password}')";
    $result=mysqli_query($link, $sql);

    if ($result) {
        echo "Success";
        echo "<meta http-equiv='refresh' content='1;url=login.html'/>";
    }else {
        echo "Failure!";
        echo "<meta http-equiv='refresh' content='1;url=reg.html'/>";
    }
}elseif ($act=='login') {
    $sql="SELECT * FROM user WHERE username='{$username}' AND password='{$password}'";
    $result=mysqli_query($link, $sql);
    $validate=mysqli_fetch_array($result);
    //var_dump($validate);
    if ($validate) {
        echo "success";
        echo "<meta http-equiv='refresh' content='1;url=http://www.baidu.com'/>";
    }else {
        echo "failure";
        echo "<meta http-equiv='refresh' content='1;url=login.html'/>";
    }
}

一言九鼎便是回想比对的时候也使用MD5,所以存在数据库中的时候固然密码保存的了

$str:原始字符串

 

 

mysql> SELECT * FROM user;
+----+----------+----------------------------------+
| id | username | password             |
+----+----------+----------------------------------+
| 1 | 123   | d41d8cd98f00b204e9800998ecf8427e |
| 2 | 123   | 5e12a8f9c9e959060fdcaea165393039 |
| 3 |     | d41d8cd98f00b204e9800998ecf8427e |
| 4 | root   | 202cb962ac59075b964b07152d234b70 |
| 5 | root   | 0c51f0ba4316a5c844397f69effe2d01 |
+----+----------+----------------------------------+

$raw_output:固然可选的raw_output棉被服装置为true,
那么md5报文章摘要要将以16字节长度的原始二进制格式再次来到.
重回以30位字符十六进制数字形式重回散列值

重在正是回想比对的时候也接纳MD5,所以存在数据库中的时候固然密码保存的了

重要即是回想比对的时候也选用MD5,所以存在数据库中的时候就是密码保存的了

② 、Crypt加密算法

md5二次加密:md5(md5($string, true))

mysql> SELECT * FROM user;
+----+----------+----------------------------------+
| id | username | password                         |
+----+----------+----------------------------------+
|  1 | 123      | d41d8cd98f00b204e9800998ecf8427e |
|  2 | 123      | 5e12a8f9c9e959060fdcaea165393039 |
|  3 |          | d41d8cd98f00b204e9800998ecf8427e |
|  4 | root     | 202cb962ac59075b964b07152d234b70 |
|  5 | root     | 0c51f0ba4316a5c844397f69effe2d01 |
+----+----------+----------------------------------+
mysql> SELECT * FROM user;
+----+----------+----------------------------------+
| id | username | password                         |
+----+----------+----------------------------------+
|  1 | 123      | d41d8cd98f00b204e9800998ecf8427e |
|  2 | 123      | 5e12a8f9c9e959060fdcaea165393039 |
|  3 |          | d41d8cd98f00b204e9800998ecf8427e |
|  4 | root     | 202cb962ac59075b964b07152d234b70 |
|  5 | root     | 0c51f0ba4316a5c844397f69effe2d01 |
+----+----------+----------------------------------+

平等是3个单向加密算法,不能够由密文直接获取明文密码(和MD5一样);

Crypt()加密算法

 

 

语法:string crypt(string $str[,string
$salt])
,$str为加密公然,$salt为扰攘项,能够掌握为椒盐噪声;

措施: 单向加密

       

       

/**
 * Crypt
 */
echo crypt('shit');
echo "<hr/>";
echo crypt('shit','im');
echo "<hr/>";
if (CRYPT_EXT_DES) {
  echo crypt('shit','this is a test');
}
echo "<hr/>";
if (CRYPT_MD5) {
  echo crypt('shit','$1$this is a test$');
}

语法: string crypt(string $str[, string $salt]) , 再次来到二个依照标准UNIX
DES算法或种类上别样可用的替代算法的三列字符串



核心没什么要说的,就一些,crypt的加密有差异的加密算法,默许的是MD5加密,但是要是不给定“盐值”,每趟刷新,都以不一致的结果;

$str: 需求加密的公然

  

  

下一场能够钦命盐值,具体参见手册,各种算法的盐值长度是不雷同的,比如上述的DES和MD5,结果如下

$salt: 加密时的烦扰串,是编码更安全

贰 、Crypt加密算法

二 、Crypt加密算法

1223b8c30a347321299611f873b449ad
$1$ed0.Ph..$fPbfhSOMLyNdtZn9krT8X/
im37cLeO/JPaQ
th12A1V7QCns.
$1$this is $Bu9FE8Y8oGnIbftjDA4ez0

小心: 如若加密时髦未拉长这么些$salt参数, 将轻易生成二个苦恼串,
不然刷新加密秘文不变

一如既往是3个单向加密算法,不能由密文直接获得明文密码(和MD5一样);

一律是三个单向加密算法,不能由密文直接拿走明文密码(和MD5一样);

DES只可以取两位,而MD5取了五个人;

算法常量:

语法:string crypt(string $str[,string
$salt])
,$str为加密公开,$salt为骚扰项,能够了解为椒盐噪声;

语法:string crypt(string $str[,string
$salt])
,$str为加密公开,$salt为苦恼项,能够知道为椒盐噪声;

用法上也大抵,记得输入盐值才好。

[CRYPT_SALT_LENGTH]

/**
 * Crypt
 */
echo crypt('shit');
echo "<hr/>";
echo crypt('shit','im');
echo "<hr/>";
if (CRYPT_EXT_DES) {
    echo crypt('shit','this is a test');
}
echo "<hr/>";
if (CRYPT_MD5) {
    echo crypt('shit','$1$this is a test$');
}
/**
 * Crypt
 */
echo crypt('shit');
echo "<hr/>";
echo crypt('shit','im');
echo "<hr/>";
if (CRYPT_EXT_DES) {
    echo crypt('shit','this is a test');
}
echo "<hr/>";
if (CRYPT_MD5) {
    echo crypt('shit','$1$this is a test$');
}

三、Sha1

私下认可的加密长度。使用专业的 DES 加密,长度为 2

 

 

同样是单向加密,不可破解(但网上的不二法门都以类似数据库一样的“伪暴力”破解);

[CRYPT_STD_DES]

主干没什么要说的,就一些,crypt的加密有两样的加密算法,暗中同意的是MD5加密,不过假使不给定“盐值”,每一趟刷新,都以不相同的结果;

主题没什么要说的,就一些,crypt的加密有区别的加密算法,暗中认可的是MD5加密,可是一旦不给定“盐值”,每一趟刷新,都以不一致的结果;

与MD5的分歧在于重返更长的(四十二人)16进制的数串(MD5是三十个人);

依据专业 DES 算法的散列使用 “./0-9A-Za-z”
字符中的七个字符作为盐值。在盐值中选取私行的字符将造成 crypt() 退步。

接下来能够钦赐盐值,具体参见手册,各类算法的盐值长度是分裂的,比如上述的DES和MD5,结果如下

接下来可以钦点盐值,具体参见手册,每种算法的盐值长度是不平等的,比如上述的DES和MD5,结果如下

/**
 * Sha1
 */
echo "<hr/>";
echo sha1('shit');
echo "<hr/>";
echo sha1('shit',true);  
echo "<hr/>";
echo sha1('admin');

[CRYPT_EXT_DES]

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图