加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php 生成签名及验证签名详解

发布时间:2020-05-23 07:39:28 所属栏目:PHP 来源:互联网
导读:这篇文章主要介绍了php 生成签名及验证签名详解的相关资料,需要的朋友可以参考下

php 生成签名及验证签名

$pkcs12 = file_get_contents($filePath); if (openssl_pkcs12_read($pkcs12,$certs,'读取证书所需要的密码')) { $privateKey = $certs['pkey']; //根据实际情况键值可能不同 $publicKey = $certs['cert']; //根据实际情况键值可能不同 $binary_signature = ""; if (openssl_sign($data,$binarySignature,$privateKey,OPENSSL_ALGO_SHA1)) { return $binarySignature; } else { return ''; } } else { return ''; }

}

/**

  • 验证签名自己生成的是否正确
  • @param string $data 签名的原文
  • @param string $signature 签名
  • @return bool
  • @author confu
    */
    function verifySign($data,$signature)
    {
    $filePath = 'test.p12';
    if(!file_exists($filePath)) {
    return false;
    }
$pkcs12 = file_get_contents($filePath);
if (openssl_pkcs12_read($pkcs12,'读取证书所需要的密码')) {
  $publicKey = $certs['cert'];
  $ok = openssl_verify($data,$signature,$publicKey);
  if ($ok == 1) {
    return true;
  }
}
return false;

}

/**

  • 验证返回的签名是否正确
  • @param string $data 要验证的签名原文
  • @param string $signature 签名内容
  • @return bool
  • @author confu
    */
    function verifyRespondSign($data,$signature)
    {
    $filePath = 'allinpay-pds.pem';
    if(!file_exists($filePath)) {
    return false;
    }
$fp = fopen($filePath,"r");
$cert = fread($fp,8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);

if(!is_resource($pubkeyid)) {
  return false;
}

$ok = openssl_verify($data,$pubkeyid);
if ($ok == 1) {
  openssl_free_key($pubkeyid);
  return true;
}
return false;

}
?>

openssl_sign 默认signature_alg参数是OPENSSL_ALGO_SHA1

  如果使用DSA加密方式需要使用OPENSSL_ALGO_DSS1参数

  signature_alg 其他参数

  OPENSSL_ALGO_DSS1 (integer)

  OPENSSL_ALGO_SHA1 (integer)

  OPENSSL_ALGO_SHA224 (integer)

  OPENSSL_ALGO_SHA256 (integer)

  OPENSSL_ALGO_SHA384 (integer)

  OPENSSL_ALGO_SHA512 (integer)

  OPENSSL_ALGO_RMD160 (integer)

  OPENSSL_ALGO_MD5 (integer)

  OPENSSL_ALGO_MD4 (integer)

  OPENSSL_ALGO_MD2 (integer)

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读