加解密算法

PHP技术
530
0
0
2022-04-19
标签   PHP加密
这篇文章主要介绍加解密算法,以及在PHP中如何使用

按大类划分,加解密分为两大类:对称加密和非对称加密。

简单的区分就是,对称加密,加解密用的是同一套秘钥;非对称加密则有公私两个秘钥,公钥用来加密,私钥用来解密。

相关函数的使用可以参考官网的函数手册,其中会有对应的示例可用来参考。

对称加密

对称加密的常规算法有:DES,3DES,AES等,支持一些模式,如 ECB,CBC,CTR等。

PHP中的 OpenSSL扩展提供了现成的函数openssl_encryptopenssl_decrypt针对对称加密,支持多种加密算法,包括国密 SM4,可通过openssl_get_cipher_methods查看具体支持的算法。

参考资料

PHP OpenSSL扩展 - 对称加密

加密模式

对称加密

非对称加密

非对称加密使用算法RSA,区别在于不同的秘钥长度,现阶段推荐秘钥长度为2048位或者更高。相关的原理可查博客园或维基百科。

PHP中的使用范例

// 生成密钥资源id,此函数主要用来校验公私秘钥是否能够正常使用
$pi_key = openssl_pkey_get_private($private_key);
$pu_key = openssl_pkey_get_public($public_key);

// 私钥加密,除了这样使用之外,也可以直接原生的秘钥内容,不进行提取
$encrypted = ‘’;
openssl_private_encrypt($data, $encrypted, $pi_key);

// 转码,这里的$encrypted就是私钥加密的字符串
$encrypted = base64_encode($encrypted);

// 公钥解密,$decrypted即为公钥解密后私钥加密前的明文
$decrypted = ‘’;
$encrypted = base64_decode($encrypted);
openssl_public_decrypt($encrypted, $decrypted, $pu_key);

参考资料

PHP OpenSSL扩展 - 非对称加密

非对称加密-维基百科

非对称加密-CSDN

哈希散列值

散列值计算是单向的,因为无法反向推导,一般用来进行各种校验。比如用户的登录秘钥,数据传输的签名。

算法一般是MD5,SHA

实际的操作中一般会加“盐”来增加破解的难度,无法通过简单的撞库来探测。

实战

https的情况下,理论上来说,数据传输加上签名就OK。不过实际使用中,在一些特别强调安全性的场合,在https的基础上依然会加密加签名。

资料查找

这篇文章非常的粗略,属于概括性的介绍,实际使用中的细节部分并没有多少涉及,现网上有很多这样细节性的内容。

维基百科和博客园都是不错的信息查找源。

查找举例

搜索栏:加解密 site:cnblogs.com