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

摘要:
在PHP中能对数据进行加密的函数主要有:crypt()、md5()以及sha1(),还有就是加密扩展库Mcrpyt和Mash。crypt()函数可以完成单向加密功能,是单向字符串散列!crypt()函数是单向加密的,密文不可还原成明文的,而且每次加密后的数据都是不同的,这就是salt参数要解决的问题了。crypt()函数用salt参数对明文进行加密,判断时,对输出的信息再次使用相同的salt参数进行加密,对比两次加密后的结果来进行判断!

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

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

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

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

1

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

算法salt长度
CRYPT_STD_DES2-character(默认)
CRYPT_EXT_DES9-character
CRYPT_MD512-character(以$1$开头)
CRYPT_BLOWFISH16-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"用户名可以使用";

}

}

?>

免责声明:文章转载自《PHP加密函数—crypt()函数加密》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇安装phpldapadminAndroid-json解析:原生JSONObject+JSONArray的使用【转】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PHP如何实现网址伪静态(转)

Apache的 mod_rewrite是比较强大的,在进行网站建设时,可以通过这个模块来实现伪静态。主要步骤如下: 1、检测Apache是否开启mod_rewrite功能     可以通过php提供的phpinfo()函数查看环境配置,找到“Loaded Modules”, 其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_...

PHP 内置函数fgets读取文件

php fgets()函数从文件指针中读取一行 语法: fgets(file,length) 参数 描述 file  必需。规定尧要读取的文件 length 可选 。规定尧都区的字节数。默认是102字节 从file指向的文件中读取一行并返回长度最多为 length-1 字节的字符串。碰到换行符(包括在返回值 中,)、EOF或者已经读取了 l...

php倒序显示中英文字符串

前面我们有讲过,使用php倒序显示字符串。 最后有提到,如果是中文的时候会乱码。 今天分享的就是“解决倒序显示中文字符串而不出现乱码”的问题。 function descstr($str){ $len=strlen($str); //函数返回字符串的长度: $newstr=""; for($i=$le...

PHP中获取远程文件的三种方法

1.file_get_contents <?php $url = 'http://www.xxx.com/'; $contents = file_get_contents($url); //如果出现中文乱码使用下面代码 //$getcontent = iconv(“gb2312″, “utf-8″,file_get_contents($url));...

用docker配置php:7.3-fpm 、nginx 和 laravel

1 安装php:7.3-fpm镜像1.1 下载镜像 docker pull php:7.3-fpm 1.2 运行镜像 docker run -p 9000:9000 -d --name myphp-fpm -v /myweb/html:/var/www/html php:7.3-fpm 1.3 查看ip docker inspect myphp-fpm|g...

使用百度翻译的API接口

http://api.fanyi.baidu.com/api/trans/product/desktop 这是申请的接口地址,会得到一个APPID和一个钥密 然后下载PHP的对应的代码  有一个PHP文件,把这两个静态变量的值改一下就可以用了   用的话,只要使用一下这个方法就OK了,$from是要翻译的语言类型,中国当然是中文 $to是要翻译成什么语...