微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php的加密技术有哪些

本文小编为大家详细介绍“PHP的加密技术有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP的加密技术有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

单向散列加密就是把任意长的输入消息串变化成固定长的输出串且由输出串难以得到输入串的一种加密算法。

常见单向散列函数

  • MD5 (Message Digest Algorithm 5)

  • SHA (Secure Hash Algorithm)

  • MAC (Message Authentication Code)

  • CRC (Cyclic Redundancy Check)

利用单项散列加密的这个特性,可以进行密码密保存。

PHP 处理密码的几种方式

  • MD5(不推荐)

$password = md5($_POST["password"]);

原因:加密算法比较简单,而且很多破解密码站点都存放了大量的经过MD5加密的密码字符串。

  • SHA256 和 SHA512(不推荐)

$password = hash("sha256", $password);

原因:加密算法比较简单。

  • 盐值(额外字符串)(常用)

<?PHP
$strSalt = '2f9c8d7h7g7f8d9k';
echo hash("sha256", $password . $strSalt);

解释:在加密的过程中,新增了一个字符串。

  • Bcrypt (比较安全)

$strSalt = '2f9c8d7h7g7f8d9k';
$salt = '$2y$11$' . $strSalt;
echo crypt($password, $salt);

解释:salt 参数是可选的。然而,如果没有salt的话,crypt()创建出来的会是弱密码

  • password_hash (安全)

//支持版本 (PHP 5 >= 5.5.0, PHP 7)
echo password_hash($password, PASSWORD_DEFAULT);

解释:password_hash() 使用足够强度的单向散列算法创建密码的哈希(hash)。

PHP函数:http://PHP.net/manual/zh/function.password-hash.PHP

PHP端验证密码是否正确?

$password = 'e4r3t2y1u';
$strPwdHash = password_hash($password, PASSWORD_DEFAULT);
if (password_verify($password, $strPwdHash)) {
    //验证成功
} else {
    //验证失败
}

对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

优点:对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。

缺点:在数据传送前,发送方和接收方必须商定好秘钥,双方必须保存好秘钥。

常用算法:

  • DES

  • AES

PHP 相关类库,网上都能找到。

非对称加密

非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

请查看历史文章PHP 使用非对称加密算法 (RSA)

密钥安全管理

上面说到的这几种加密技术,能够达到安全保密效果的一种重要前提就是密钥的安全。

在实际工作中,我们有开发环境,预发布环境,正式环境,每个环境中的密钥都不相同。

那么,我们应该如何保存密钥呢?

  • 写在源码中(不可取)。

  • 写在配置文件中。(大部分这样干)。

  • 写在环境变量中。(大部分这样干)。

  • 保存在一个系统中,每次加密、解密都调取服务系统(系统开销大)。

  • 自己写一个扩展,用PHP调取自己的扩展(维护成本高)。

读到这里,这篇“PHP的加密技术有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容文章,欢迎关注编程之家行业资讯频道。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐