首先我来简单介绍一下为什么要加密?
通常,当数据在传送时,数据最容易受到攻击,那么加密就是对信息进行编码的过程,以便对未经授权的用户保持隐藏。它能确保私有数据、敏感数据,并可以提高客户端应用程序和服务器之间通信的安全性。
下面就给大家介绍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, '$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视频教程》! 总结
以上是内存溢出为你收集整理的在PHP中实现加密的这三种方法,你会选择哪个?全部内容,希望文章能够帮你解决在PHP中实现加密的这三种方法,你会选择哪个?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)