Home > Article > Backend Development > Of these three ways to implement encryption in PHP, which one would you choose?
你知道在PHP中怎么实现加密算法吗?你知道PHP中有几个加密函数?你会选择使用他们吗?走过路过不要错过啦~本文就将给大家介绍PHP中最常用的实现加密的三种方法!
首先我来简单介绍一下为什么要加密?
通常,当数据在传送时,数据最容易受到攻击,那么加密就是对信息进行编码的过程,以便对未经授权的用户保持隐藏。它能确保私有数据、敏感数据,并可以提高客户端应用程序和服务器之间通信的安全性。
下面就给大家介绍PHP中最常用的三个加密函数,分别是md5()
、crypt()
和password_hash()
;
一:使用 md5()
加密
md5()函数可以计算字符串的 MD5 散列,它是最常用的加密方法;
md5函数的语法为:
md5(string,raw)
其中string是要加密的字符串;row是可选参数,它指定输出格式(十六进制或二进制输出格式),可以是TRUE,也可以是FALSE,默认为FALSE(32字符十六进制数)。
使用示例:
加密密码值并存储在数据库中。
<?php $conn = new mysqli('hostname', 'username', 'password', 'databasename'); $pwd = $_POST['password']; $encrypted_pwd = md5($pwd); $username = $_POST['username']; $insert ="INSERT into an_users (id, username, password) VALUES ('', '$username', '$encrypted_pwd')"; if($conn->query($insert)){ echo 'Data inserted successfully'; } else{ echo 'Error '.$conn->error; } ?>
二、使用 crypt()
加密密码
crypt函数的作用是使用salt返回一个散列字符串。此方法生成弱密码,它为salt接受第二个参数,这是一个可选参数;salt是一个格式化字符串,它告诉crypt()方法使用哪种算法进行散列;
其语法是:
crypt($string, $salt);
有很多salt常量,但这里我使用了CRYPT_MD5,这将生成 12 个字符的salt。
代码如下:
<?php $conn = new mysqli('hostname', 'username', 'password', 'databasename'); $pwd = $_POST['password']; if(CRYPT_MD5 == 1) { $encrypted_pwd = crypt($pwd, '$12$hrd$reer'); } $username = $_POST['username']; $insert = "INSERT INTO an_users (id, username, password) VALUES('', '$username', '$encrypted_pwd')"; if($conn->query($insert)){ echo 'Data inserted successfully'; } else{ echo 'Error '.$conn->error; } ?>
附:
三:使用 password_hash()
加密密码
password_hash()使用足够强度的单向散列算法创建一个新的密码散列,password_hash()函数与crypt()函数兼容,它在PHP 5.1中实现。
password_hash()的语法是 :
password_hash(string, algorithm, options)
其中string是要加密的字符串,algorithm表示对密码进行哈希处理时使用的算法,options是包含选项的关联数组。
使用示例如下:
使用password_hash()加密密码值并存储在数据库中:
<?php // 连接数据库 $conn = new mysqli('hostname', 'username', 'password', 'databasename'); $pwd = $_POST['password']; // 使用PASSWORD_DEFAULT $hash = password_hash($pwd, PASSWORD_DEFAULT); $username = $_POST['username']; $insert ="INSERT into an_users (id, username, password) VALUES ('', '$username', '$hash')"; if($conn->query($insert)){ echo 'Data inserted successfully'; } else{ echo 'Error '.$conn->error; } ?>
PHP中文网平台有非常多的视频教学资源,欢迎大家学习《PHP视频教程》!
The above is the detailed content of Of these three ways to implement encryption in PHP, which one would you choose?. For more information, please follow other related articles on the PHP Chinese website!