常用加密算法
PHP常用加密算法:
不可逆的加密函数为:
- md5
- crypt
- sha1
可逆加密:
- aes
- rsa
分别介绍
- md5常用于api接口的签名
md5($str, bool):默认返回32位,为true返回16位的二进制字符
- crypt 常用于密码的加密保存
crypt ( $str,$salt):返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串,为了更好的安全性,请确保指定一个足够强度的盐值
- sha1 常用于接口签名
sha1($str, bool):默认返回40位,为true返回20位的源码格式字符
- aes 常用于接口参数加密
加密
base64_encode(openssl_encrypt($str, 'aes-128-cbc', $key, true, $iv))
解密
openssl_decrypt(base64_decode($str), 'aes-128-cbc', $key, true, $iv)
- rsa 常用于SSL协议
rsa签名:
$priKey = file_get_contents($private_key_path);
$res = openssl_get_privatekey($priKey);
openssl_sign($data, $sign, $res);
openssl_free_key($res);
//base64编码
$sign = base64_encode($sign);
rsa验签
//读取公钥文件
$pubKey = file_get_contents('key/alipay_public_key.pem');
//转换为openssl格式密钥
$res = openssl_get_publickey($pubKey);
//调用openssl内置方法验签,返回bool值
$result = (bool)openssl_verify($data, base64_decode($sign), $res);
//释放资源
openssl_free_key($res);
rsa2签名
$priKey = file_get_contents($private_key_path);
$res = openssl_get_privatekey($priKey);
openssl_sign($data, $sign, $res, OPENSSL_ALGO_SHA256);
$sign = base64_encode($sign);
//释放资源
openssl_free_key($res);
rsa2验签
$res = file_get_contents($rsaPublicKeyFilePath);
//转换为openssl格式密钥
$res = openssl_get_publickey($res);
$result = (bool)openssl_verify($data, base64_decode($signKey), $res, OPENSSL_ALGO_SHA256);
//释放资源
openssl_free_key($res);