• PHP加密函数—crypt()函数加密


    在介绍加密函数之前,我们先来介绍一下数据加密原理:就是对原来的明文件或者数据按照某种算法进行处理,使其成为不可读的一段代码,通常称之为“密文”,通过这样的途径来达到保护数据不被非法窃取和阅读的目的!

    在PHP中能对数据进行加密的函数主要有:crypt()、md5()以及sha1(),还有就是加密扩展库Mcrpyt和Mash。在这篇文章中,我们先介绍使用crpyt()函数进行加密!

    crypt()函数可以完成单向加密功能,是单向字符串散列!大理石平台维修

    crypt()函数语法格式如下:

    1

    string crypt ( string $str [, string $salt ] )

    算法 salt长度
    CRYPT_STD_DES 2-character(默认)
    CRYPT_EXT_DES 9-character
    CRYPT_MD5 12-character(以$1$开头)
    CRYPT_BLOWFISH 16-character(以$2$开头)

    这里要说明一下:

    在默认的情况下,PHP使用一个或者两个字符的 DES 干扰串,如果系统使用的是MD5,那么就会使用 12个字符,可以通过 CRYPT_SALT_LENGTH 变量来查看当前所使用的干扰串的长度!

    crypt()函数实例用法:

    下面我们使用一个实例,让大家一目了然,具体代码如下:

    1

    2

    3

    4

    5

    6

    7

    <?php

    header("Content-Type:text/html; charset=utf-8");

    $atr = "php中文网 www.php.cn"//声明字符串变量$atr

    echo "加密之前atr的值为:".$atr;

    $atr1 = crypt($atr);              //对变量$str 加密

    echo "<br>加密之后str的值为:".$atr1; //输出加密后的变量

    ?>

    输出的结果如下:

    上面的实例执行之后,一直刷新浏览器,你会发现每次生成的加密结果都是不一样的,那么该如何进行对加密后的数据进行判断就成了问题。crypt()函数是单向加密的,密文不可还原成明文的,而且每次加密后的数据都是不同的,这就是 salt 参数要解决的问题了。

    crypt()函数用 salt参数对明文进行加密,判断时,对输出的信息再次使用相同的 salt 参数进行加密,对比两次加密后的结果来进行判断!

    下面的实例对输入用户名进行检查,具体代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    <?php

    header("Content-Type:text/html; charset=utf-8");

    $link=mysqli_connect("localhost","root","");

    $db_selected = mysqli_select_db($link,"my_db");

    ?>

        <form name="form1" action="" method="post">

        <input type="text" name="username" id="username" size="15">

        <input type="submit" name="Submit" value="检测">

        </form>

    <?php

    if(isset($_POST["username"])!=""){

        $usr=crypt(isset($_POST["username"]),"tm");             //对用户名进行加密

        $sql = "select * from tb_user where user = '".$usr."'";//生成查询语句

        $rst = mysqli_query($link,$sql);                          //执行语句,返回结果集

        if($rst){

            echo "用户名存在";

        }else{

            echo "用户名可以使用";

        }

    }

    ?>

  • 相关阅读:
    [置顶] MapReduce 编程之 倒排索引
    java学习之路---线程(重点)
    CentOS下用Tomcat+Zookeeper+Nginx+Solr完美搭建SolrCloud平台(五)
    qsort的几种用法
    两道水题(月之数)(排序)
    快排
    Red and Black(简单dfs)
    zb的生日(暴搜dfs)
    又见01背包
    五子棋
  • 原文地址:https://www.cnblogs.com/furuihua/p/12108411.html
Copyright © 2020-2023  润新知