当前位置 博文首页 > 文章内容

    在PHP中实现加密的这三种方法,你会选择哪个?

    作者:shunshunshun18 栏目:未分类 时间:2021-08-21 10:45:10

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    你知道在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;  
      }
    ?>

    附:

    b2a8543c1b0bbacc23dd6a042451dc3.png

    三:使用 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;  
    }
    ?>

    IIS7站长之家博文平台有非常多的视频教学资源,欢迎大家学习《》!