[摘要]本篇文章给大家带来的内容是介绍PHP如何加密解密?PHP加密解密的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。为了保证网络传输数据的安全性,涉及敏感数据的传输,最好对数据预...
本篇文章给大家带来的内容是介绍PHP如何加密解密?PHP加密解密的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
为了保证网络传输数据的安全性,涉及敏感数据的传输,最好对数据预先加密,然后再在网络上进行传输,同时,还要保证数据在另一端是可解密的,并且还必须要通过钥匙(公钥或私钥)才能解密,没有钥匙(公钥或私钥)的人即使是拿到了加密过的数据也无法解密。
本篇文章主要给大家介绍对称加密中的AES加密算法;非对称加密中的RSA加密算法。【相关视频教程推荐:PHP教程】
一、对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。
AES加密算法
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
PHP的OpenSSL扩展已经实现了AES加密算法,我们可以通过OpenSSL扩展提供的方法实现对数据的加密和解密,PHP在7.2版本已经完全移除了MCrypt加密,PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt.
PHP AES实现(加密、解密)
PHP实现代码:
class AES
{
//设置AES秘钥
private static $aes_key = 'bUYJ3nTV6VBasdJF'; //此处填写前后端共同约定的秘钥
/**
* 加密
* @param string $str 要加密的数据
* @return bool string 加密后的数据
*/
static public function encrypt($str) {
$data = openssl_encrypt($str, 'AES-128-ECB', self::$aes_key, OPENSSL_RAW_DATA);
$data = base64_encode($data);
return $data;
}
/**
* 解密
* @param string $str 要解密的数据
* @return string 解密后的数据
*/
static public function decrypt($str) {
$decrypted = openssl_decrypt(base64_decode($str), 'AES-128-ECB', self::$aes_key, OPENSSL_RAW_DATA);
return $decrypted;
}
}
RSA是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。
以甲要把信息发给乙为例,首先确定角色:甲为加密者,乙为解密者。首先由乙随机确定一个KEY,称之为密匙,将这个KEY始终保存在机器B中而不发出来;然后,由这个 KEY计算出另一个KEY,称之为公匙。这个公钥的特性是几乎不可能通过它自身计算出生成它的私钥。接下来通过网络把这个公钥传给甲,甲收到公钥后,利用公钥对信息加密,并把密文通过网络发送到乙,最后乙利用已知的私钥,就对密文进行解码了。以上就是RSA算法的工作流程。