外链论坛

 找回密码
 立即注册
搜索
查看: 14|回复: 0

PHP加密解密详解

[复制链接]

1269

主题

0

回帖

9957万

积分

论坛元老

Rank: 8Rank: 8

积分
99575858
发表于 2024-7-11 02:09:35 | 显示全部楼层 |阅读模式

为了保准网络传输数据的安全性,触及敏锐数据的传输,最好对数据预先加密,而后再在网络上进行传输,同期,还要保准数据在另一端是可解密的,并且还必要经过钥匙(公钥或私钥)才可解密,钥匙(公钥或私钥)的人即使是拿到了加密过的数据法解密。

叫作加密

采用单钥暗码系统的加密办法,同一个密钥能够同期用作信息的加密和解密,这种加密办法叫作为对叫作加密,叫作为单密钥加密。

在对叫作加密算法中常用的算法有:DES3DES、TDEA、Blowfish、RC2、RC4、RC5IDEA、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; } }

非对叫作加密

叫作加密算法在加密和解密时运用的是同一个秘钥;而非对叫作加密算法必须两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简叫作公钥)和私有密钥(private key,简叫作私钥)。

在非对叫作加密中运用重点算法有:RSAElgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。

RSA加密算法

RSA是日前最有影响力的公钥加密算法,该算法基于一个非常简单的数论事实:将两个大素数相乘非常容易,但那时想要对其乘积进行因式分解却极其困难,因此呢能够将乘积公开做为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人运用,私钥则为自己所有,供解密之用。

解密者持有私钥,并且将由私钥计算生成的公钥发布给加密者。加密都运用公钥进行加密,并将密文发送到解密者,解密者用私钥解密将密文解码为明文。

以甲要把信息发给乙为例,首要确定角色:甲为加密者,乙为解密者。首要由乙随机确定一个KEY,叫作之为密匙,将这个KEY始终保留在机

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-7-29 09:19 , Processed in 0.171489 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.