您现在的位置是:网站首页 > 心得笔记

WEB开发种常见的加密方式

盛悦2022-05-132243人围观
简介单向散列加密和对称加密......

单向散列加密

单向散列(hash)加密是指把任意长的输入串变化成固定长的输出串,并且由输出串难以得到输入串的加密方法,这种方法称为单项散列加密。广泛应用于对敏感数据加密,比如用户密码,请求参数,文件加密等。我们开发中存储用户密码就用到了单向散列加密算法。

常见的单向散列加密算法有:

MD5

SHA

单向散列加密算法的优点有(以MD5为例):

方便存储:加密后都是固定大小(32位)的字符串,能够分配固定大小的空间存储。

损耗低:加密/加密对于性能的损耗微乎其微。

文件加密:只需要32位字符串就能对一个巨大的文件验证其完整性。

不可逆:大多数的情况下不可逆,具有良好的安全性。

单向散列加密的缺点就是存在暴力破解的可能性,最好通过加盐值的方式提高安全性,此外可能存在散列冲突。我们都知道MD5加密也是可以破解的。

对于PHPer来说,不推荐使用md5()简单加密,而是推荐大家使用password_hash()对数据加密存储,该函数使用足够强度的单向散列算法创建密码的哈希(hash),使加密后的数据更加安全可靠。对于用户密码的加密存储和验证支持相当好。

//密码加密
$password = '123456';
$passwordHash = password_hash(
    $password,
    PASSWORD_DEFAULT,
    ['cost' => 12]
);

//密码验证
if (password_verify($password, $passwordHash)) {
    //Success
} else {
    //Fail
}

对称加密

同一个密钥可以同时用作数据的加密和解密,这种方法称为对称加密。应用于相对大一点的数据量或关键数据的加密的场景。我们开发中常用到接口参数签名验证服务就用到了对称加密算法。

常见的对称加密算法有:

DES

AES

AES 是 DES 的升级版,密钥长度更长,选择更多,也更灵活,安全性更高,速度更快。

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

缺点是发送方和接收方必须商定好密钥,然后使双方都能保存好密钥,密钥管理成为双方的负担。

对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。

//DES加密
$key = '123kils1321dshfdsvcxpUsdaq23'; //安全密钥
$data = 'name=iphone11&order_id=201233232323123&price=3357&num=2';//加密明文
$decodeData = openssl_encrypt($data, 'DES-ECB', $key, 0);

使用PHP自带的openssl_encrypt加密方法,对数据进行DES加密结果如下:

oc3PdhugNue/t3i8HfXjd9YUP9BnTLg0Re9R1u2fsZr0jU2hIpCIjR0bruAwNSIGkqulrNHGYm8=

另外一方在拿到密文后,再使用相同的密钥,使用openssl_decrypt()对密文进行DES解密:

$key = '123kils1321dshfdsvcxpUsdaq23'; //安全密钥
$decodeData = 'oc3PdhugNue/t3i8HfXjd9YUP9BnTLg0Re9R1u2fsZr0jU2hIpCIjR0bruAwNSIGkqulrNHGYm8=';
$de = openssl_decrypt($decodeData, 'DES-ECB', $key, 0);
echo $de;

运行代码,最后得到解密后的结果:

name=iphone11&order_id=201233232323123&price=3357&num=2

转载于:https://mp.weixin.qq.com/s/mIpicKxF4MLXZf8pMu2LIQ

上一篇:MySQL事务

下一篇:crontab详解