REA非对称加密和AES对称加密

RSA 非对称加密

非对称加密很安全,但是非常慢,所以我们一般用对称加密来加密传递消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去

非对称加密有公私钥组成,其中私钥要有一方保管不能外泄,而公钥可以任何请求它的人,双方交互,相互交换公钥,用自己的私钥进行签名,那么只要有我方的公钥就可以验签成功,用对方的公钥进行加密,那么只有持有对应的私钥才可以解密,能最大限度的保证安全

AES对称加密 

最快速 最简单的一种加密方式,加密和解密用的是同样的秘钥,这种方法在密码学中叫做对称加密算法

对称加密通常使用相对较小的秘钥,一般小于256bit,因为秘钥越大,加密于越强,但加密与解密的过程越慢

对称加密的一大缺点是秘钥的管理和与分配,换句话说,如何把秘钥发送到要解密你消息的人的手里是一个问题;现实中通常的做法是将对称加密的秘钥进行非对称加密,然后传送给需要它的人

openssl  (openssl secure sockets layer) 开放式安全套接层协议

PHP中支持openssl扩展,可以用来对数据进行加密

非对称加密函数:

openssl_encrypt(string $data, string $method, string $key[, int options = 0[,string $iv]])     加密数据

openssl_decrypt()  解密数据  // 参数同上

参数解释:

data 待加密的数据

method 加密算法, AES-128-CBC AES-256-CBC.....

key 加密的秘钥,秘钥长度是method使用的位数 / 8

options 是以下标记的按位或: OPENSSL_RAW_DATA 、 OPENSSL_ZERO_PADDING

iv 非null初始化向量,长度小于等于method使用的位数 / 8 

返回值: 成功返回二进制的字符串,可以使用base64_encode进行转化

注意: 

加解密使用的iv必须一致

对称加密:

openssl_private_encrypt(string $data, string &$decrypted, mixed $key [, int $padding = OPENSSL_OKCS1_PADDING])    使用私钥加密

openssl_private_decrypt()    使用私钥解密

openssl_public_encrypt()     使用公钥加密

openssl_public_decrypt()     使用公钥解密

参数说明:

data  需要加密/解密的数据

decrypted 这将保存加密/解密的结果

key 公钥/私钥,必须是和用来加密/解密所用的公私钥对应的公私钥

padding 可以是一些常量值

原文地址:https://www.cnblogs.com/skl-bobo/p/13565121.html