一般接口处于安全考虑,会增加秘钥处理,实现数据安全
公钥则为提供接口方的,私钥则为使用者方
私钥封装类方法:
public static function sign($content, $rsaPrivateKeyPem)
{
$priKey = file_get_contents($rsaPrivateKeyPem); //打开文件,将文件内容保存成字符串
$res = openssl_pkey_get_private($priKey); //检查该私钥是否可用
$content = base64_encode($content); //时间戳进行base64转码
openssl_sign($content, $sign, $res, OPENSSL_ALGO_MD5); //设置签名的哈希算法(Algorithm)为MD5
openssl_free_key($res);
$sign = base64_encode($sign);
return $sign;
}
使用:
self::sign(参数, '文件名');
公钥验证:
function verify($data, $sign) {
//读取公钥文件
$pubKey = file_get_contents('rsa_public_key.pem');
//转换为openssl格式密钥
$res = openssl_get_publickey($pubKey);
//调用openssl内置方法验签,返回bool值
$result = (bool)openssl_verify($data, $sign, $res);
//释放资源
openssl_free_key($res);
return $result;
}