文件扩展和教程下载地址php通过CFCA证书实现RSA的PKCS7格式的签名和验签步骤-PHP文档类资源-CSDN下载
1、对应的证书
证书 | 用途 |
---|---|
**********.pfx | 用于加签 API 的请求参数 |
**********.cer | 用于解签 API 的返回参数 |
java的签名方式
/**
* 请求参数加签
* @param pfxFilePath
* @param pfxFilePwd
* @param content
* @return
*/
public static String signature(String pfxFilePath, String pfxFilePwd, String content){
SignResult signResult = CFCASignature.signature(pfxFilePath, pfxFilePwd, Mechanism.SHA256_RSA, content, Constants.UTF_8);
if (RespCode.RESP_SUCC_000.getCode().equals(signResult.getCode())){
return signResult.getSign();
}else {
logger.error("签名失败,signResult={}", signResult.toString());
return null;
}
}
php签名的代码
<?php
/**
* 根据原文生成签名内容
*
* @param string $data 原文内容
*
* @return string
* @author confu
*/
function sign($data)
{
$filePath = 'test.pfx';
if(!file_exists($filePath)) {
return false;
}
$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 '';
}
}
最后发现竟然对不上,网上也搜索很多,没找到答案