python里面的pkcs7加密好像实现不一样,得出的结果完全不一样
php的代码如下
public static function envelope($data){
$Millisecond = SignEnvelope::getMillisecond();
//保存源数据文件
$dataFile = "./rsa/".$Millisecond."data.txt";
//保存签名文件
$signedFile = "./rsa/".$Millisecond."signed.txt";
//保存签名后base64文件
$signedDataFile = "./rsa/".$Millisecond."signedData.txt";
//保存信封后文件
$envelopeFile = "./rsa/".$Millisecond."envelope.txt";
#加载p12
openssl_pkcs12_read (file_get_contents(Contants::pri), $certs, Contants::passWord);
$signCert = $certs ['cert'];
$signKey = $certs['pkey'];
#加载加密证书
$encryCert = file_get_contents(Contants::pub);
#加密原文
$fp = fopen($dataFile, "w");
fwrite($fp, $data);
fclose($fp);
#签名
openssl_pkcs7_sign($dataFile,$signedFile,
$signCert, array($signKey,""), NULL, PKCS7_NOATTR|PKCS7_BINARY|PKCS7_NOSIGS);
$signedBase64 = file_get_contents($signedFile);
$signedBase64 = substr($signedBase64, strpos($signedBase64, "base64") + strlen("base64"));
trim($signedBase64);
#print_r($signedBase64);
#echo "<br/><br/><br/>";
$signedData = base64_decode($signedBase64);
$fp = fopen($signedDataFile, "w");
fwrite($fp, $signedData);
fclose($fp);
#信封
openssl_pkcs7_encrypt($signedDataFile,$envelopeFile,
$encryCert, NULL, PKCS7_BINARY, OPENSSL_CIPHER_3DES);
$envelopeBase64 = file_get_contents($envelopeFile);
$envelopeBase64 = substr($envelopeBase64, strpos($envelopeBase64, "base64") + strlen("base64"));
trim($envelopeBase64);
$envelopeBase64 = base64_decode($envelopeBase64);
$envelopeBase64 = base64_encode($envelopeBase64);
//$envelopeBase64 = str_replace("\r\n","",$envelopeBase64);
//print_r( $envelopeBase64 );
//删除加密过程中创建的文件
unlink($dataFile);
unlink($signedFile);
unlink($signedDataFile);
unlink($envelopeFile);
return $envelopeBase64;}
如果要用python实现这个方法的话,应该怎么写?
python里面的pkcs7加密好像实现不一样,得出的结果完全不一样
立即学习“PHP免费学习笔记(深入)”;
php的代码如下
采用 php+mysql 数据库方式运行的强大网上商店系统,执行效率高速度快,支持多语言,模板和代码分离,轻松创建属于自己的个性化用户界面 v3.5更新: 1).进一步静态化了活动商品. 2).提供了一些重要UFT-8转换文件 3).修复了除了网银在线支付其它支付显示错误的问题. 4).修改了LOGO广告管理,增加LOGO链接后主页LOGO路径错误的问题 5).修改了公告无法发布的问题,可能是打压
0
public static function envelope($data){
$Millisecond = SignEnvelope::getMillisecond();
//保存源数据文件
$dataFile = "./rsa/".$Millisecond."data.txt";
//保存签名文件
$signedFile = "./rsa/".$Millisecond."signed.txt";
//保存签名后base64文件
$signedDataFile = "./rsa/".$Millisecond."signedData.txt";
//保存信封后文件
$envelopeFile = "./rsa/".$Millisecond."envelope.txt";
#加载p12
openssl_pkcs12_read (file_get_contents(Contants::pri), $certs, Contants::passWord);
$signCert = $certs ['cert'];
$signKey = $certs['pkey'];
#加载加密证书
$encryCert = file_get_contents(Contants::pub);
#加密原文
$fp = fopen($dataFile, "w");
fwrite($fp, $data);
fclose($fp);
#签名
openssl_pkcs7_sign($dataFile,$signedFile,
$signCert, array($signKey,""), NULL, PKCS7_NOATTR|PKCS7_BINARY|PKCS7_NOSIGS);
$signedBase64 = file_get_contents($signedFile);
$signedBase64 = substr($signedBase64, strpos($signedBase64, "base64") + strlen("base64"));
trim($signedBase64);
#print_r($signedBase64);
#echo "<br/><br/><br/>";
$signedData = base64_decode($signedBase64);
$fp = fopen($signedDataFile, "w");
fwrite($fp, $signedData);
fclose($fp);
#信封
openssl_pkcs7_encrypt($signedDataFile,$envelopeFile,
$encryCert, NULL, PKCS7_BINARY, OPENSSL_CIPHER_3DES);
$envelopeBase64 = file_get_contents($envelopeFile);
$envelopeBase64 = substr($envelopeBase64, strpos($envelopeBase64, "base64") + strlen("base64"));
trim($envelopeBase64);
$envelopeBase64 = base64_decode($envelopeBase64);
$envelopeBase64 = base64_encode($envelopeBase64);
//$envelopeBase64 = str_replace("\r\n","",$envelopeBase64);
//print_r( $envelopeBase64 );
//删除加密过程中创建的文件
unlink($dataFile);
unlink($signedFile);
unlink($signedDataFile);
unlink($envelopeFile);
return $envelopeBase64;}
如果要用python实现这个方法的话,应该怎么写?
你需要别人帮你重写代码还是这个:http://www.php2python.com/ ?
就是重写下啦,搜不到
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号