RSA 加解密 非对称加密

RSA 加解密 非对称加密
相关介绍
RSA算法属于非对称加密算法,非对称加密算法需要两个秘钥:公开密钥(publickey)和私有秘钥(privatekey).公开密钥和私有秘钥是一对,
如果公开密钥对数据进行加密,只有用对应的私有秘钥才能解密;
如果私有秘钥对数据进行加密那么只有用对应的公开密钥才能解密.
加密解密使用的是两个不同的秘钥,这种算法叫做非对称加密算法/公钥加密私钥解密,私钥加密公钥解密.
需要注意的地方
1.RSA 加密或签名后的结果是不可读的二进制,使用时经常会转为 BASE64 码再传输
2.RSA 加密时,对要加密数据的大小有限制,最大不大于密钥长度。例如在使用 1024 bit 的密钥时(秘钥生成可以自行百度),最大可以加密 1024/8=128 Bytes 的数据。数据大于 128 Bytes 时,需要对数据进行分组加密(如果数据超限,加解密时会失败,openssl 函数会返回 false),分组加密后的加密串拼接成一个字符串后发送给客户端。
为了保证每次加密的结果都不同,RSA 加密时会在待加密数据后拼接一个随机字符串,再进行加密。不同的填充方式 Padding 表示这个字符串的不同长度,在对超限数据进行分组后,会按照这个 Padding 指定的长度填入随机字符串。例如如果 Padding 填充方式使用默认的 OPENSSL_PKCS1_PADDING(需要占用 11 个字节用于填充),那么明文长度最多只能就是 128-11=117 Bytes。
接收方解密时也需要分组。将加密后的原始二进制数据(对于经过 BASE64 的数据,需要解码),每 128 Bytes 分为一组,然后再进行解密。解密后,根据 Padding 的长度丢弃随机字符串,把得到的原字符串拼接起来,就得到原始报文。
3.openssl_public_encrypt函数 php的默认填充和无填充是有区别的,如果只是php和php对接则不需要关注这个问题,如果是php跟c或java,需要选择无填充然后自行加入填充
4.需要将php的openssl模块打开或安装(win打开,linux安装)
参数发送 Body/form-data
Web:https://www.cnblogs.com/makalochen/p/10845033.html

AES加解密 对称加密

public function encrypt($data)
{
    
    
    return openssl_encrypt($data, 'AES-128-ECB', 'BankShopAesKeyMini', 0, '');
}
public function decrypt($data)
{
    
    
    return openssl_decrypt($data, 'AES-128-ECB', 'BankShopAesKeyMini', 0, '');
}

猜你喜欢

转载自blog.csdn.net/weixin_43784997/article/details/115235468
今日推荐