PHP加密算法详解

常用加密算法

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);

转载于:https://my.oschina.net/fage1151/blog/1940739

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值