中行P1签名及验签
分享中国银行快捷.NET P1签名和验签方法代码中ReturnValue为自定义类型请无视
#region 验证签名
/// <summary>
/// 验证签名
/// </summary>
/// <param name="plainText">返回数据原文</param>
/// <param name="pubKeyPath">公钥证书地址</param>
/// <param name="signatureData">签名值</param>
/// <returns></returns>
public static bool VerifyBankGatewayShortPaySign(string plainText, string pubKeyPath, string signatureData)
{
bool bVerify;
try
{
//将base64签名数据转码为字节
byte[] signedBase64 = Convert.FromBase64String(signatureData);
byte[] orgin = Encoding.UTF8.GetBytes(plainText);
//加载公钥
X509Certificate2 x509_Cer1 = new X509Certificate2(pubKeyPath);
using (RSACryptoServiceProvider oRSA = new RSACryptoServiceProvider())
{
oRSA.FromXmlString(x509_Cer1.PublicKey.Key.ToXmlString(false));
bVerify = oRSA.VerifyData(orgin, "SHA1", signedBase64);
return bVerify;
}
}
catch (Exception ex)
{
return false;
}
}
#endregion
/// <summary>
/// 证书
/// </summary>
/// <param name="certifyFilePath">证书路径</param>
/// <param name="certifyPassWord">证书密码</param>
/// <returns></returns>
private static X509Certificate2 RetrieveX509Certificate(string certifyFilePath, string certifyPassWord)
{
if (string.IsNullOrEmpty(certifyPassWord))
return new X509Certificate2(certifyFilePath);
else
return new X509Certificate2(certifyFilePath, certifyPassWord);
}
#region 创建签名
/// <summary>
/// 根据原文创建P1签名
/// </summary>
/// <param name="plainText">请求数据原文</param>
/// <param name="prikeyPath">私钥证书地址</param>
/// <param name="pfxPwd">私钥密码</param>
/// <returns></returns>
public static string CreateBankGatewayShortPaySign(string plainText, string prikeyPath, string pfxPwd)
{
string sign;
try
{
byte[] plainByte = System.Text.Encoding.UTF8.GetBytes(plainText);
//加载私钥
X509Certificate2 myCert = RetrieveX509Certificate(prikeyPath, pfxPwd);
using (RSACryptoServiceProvider RSA = (RSACryptoServiceProvider)myCert.PrivateKey)
{
RSAPKCS1SignatureFormatter rsaDeformatter = new RSAPKCS1SignatureFormatter(RSA);
rsaDeformatter.SetHashAlgorithm("SHA1");
SHA1Managed sha = new SHA1Managed();
byte[] byteHash = sha.ComputeHash(plainByte);
//执行签名
byte[] encryptedSignatureData = rsaDeformatter.CreateSignature(byteHash);
sign = Convert.ToBase64String(encryptedSignatureData);
}
return sign;
}
catch (Exception ex)
{
return "";
}
}
#endregion
分享不易使用请关注点赞谢谢
中行P1签名及验签的更多相关文章
- .NET RSA解密、签名、验签
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Sec ...
- PHP SHA1withRSA加密生成签名及验签
最近公司对接XX第三方支付平台的代付业务,由于对方公司只有JAVA的demo,所以只能根据文档自己整合PHP的签名加密,网上找过几个方法,踩到各种各样的坑,还好最后算是搞定了,话不多说,代码分享出来. ...
- 几个例子理解对称加密与非对称加密、公钥与私钥、签名与验签、数字证书、HTTPS加密方式
# 原创,转载请留言联系 为什么会出现这么多加密啊,公钥私钥啊,签名啊这些东西呢?说到底还是保证双方通信的安全性与完整性.例如小明发一封表白邮件给小红,他总不希望给别人看见吧.而各种各样的技术就是为了 ...
- erlang的RSA签名与验签
1.RSA介绍 RSA是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对 其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而 ...
- Delphi微信支付【支持MD5和HMAC-SHA256签名与验签】
作者QQ:(648437169) 点击下载➨微信支付 微信支付api文档 [Delphi 微信支付]支持付款码支付.二维码支付.订单查询.申请退款.退款查询.撤销订单.关闭订单. ...
- Delphi支付宝支付【支持SHA1WithRSA(RSA)和SHA256WithRSA(RSA2)签名与验签】
作者QQ:(648437169) 点击下载➨Delphi支付宝支付 支付宝支付api文档 [Delphi支付宝支付]支持条码支付.扫码支付.交易查询.交易退款.退款查询.交易撤 ...
- RSA后台签名前台验签的应用(前台采用jsrsasign库)
写在前面 安全测试需要, 为防止后台响应数据返给前台过程中被篡改前台再拿被篡改后的数据进行接下来的操作影响正常业务, 决定采用RSA对响应数据进行签名和验签, 于是有了这篇<RSA后台签名前台验 ...
- Delphi RSA签名与验签【支持SHA1WithRSA(RSA1)、SHA256WithRSA(RSA2)和MD5WithRSA签名与验签】
作者QQ:(648437169) 点击下载➨ RSA签名与验签 [delphi RSA签名与验签]支持3种方式签名与验签(SHA1WithRSA(RSA1).SHA256WithRSA(RSA2)和M ...
- 密码基础知识(2)以RSA为例说明加密、解密、签名、验签
密码基础知识(1)https://www.cnblogs.com/xdyixia/p/11528572.html 一.RSA加密简介 RSA加密是一种非对称加密.是由一对密钥来进行加解密的过程,分别称 ...
随机推荐
- NO---20 文件上传
文件上传是我们会经常用到的一个业务,其实在h5中新增了FormData的对象,用它来提交表单,并且可以提交二进制文件,所以今天就写写文件上传,希望可以对大家有帮助 FormData 上传文件实例 首先 ...
- elementUI实现前端分页
按照他的文档来写分页,最主要的是el-table里面展示的数据怎么处理 <el-table :data="AllCommodityList.slice((currentPage-1)* ...
- [转载]MySQL面试题
1.MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联:(1)主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中:(2)从:io线程——在使用s ...
- Kubernetes探索学习001--Centos7.6使用kubeadm快速部署Kubernetes集群
Centos7.6使用kubeadm快速部署kubernetes集群 为什么要使用kubeadm来部署kubernetes?因为kubeadm是kubernetes原生的部署工具,简单快捷方便,便于新 ...
- 【探路者】Final发布
[探路者]团队项目final发布:贪吃蛇 [探路者]贪吃蛇 final发布展示(视频)链接: http://v.youku.com/v_show/id_XMzIxMDM2MTQ1Ng==.html?s ...
- 20180711-统计PDB中的蛋白质种类、膜蛋白文件个数及信息等
20180710完成这份工作.简单,但是完成了还是很开心.在我尝试如何使用pickle保存数据后,尝试保存PDB文件中“HEADER”中的信息.文件均保存于实验室服务器(97.73.198.168)/ ...
- 安卓开发神器vysor+adb wifi
准备: 1.vysor需要FQ从google应用商店下载,装在google上,目前知道的免费的vysor的作用是电脑显示手机屏幕并且能操控手机. 步骤:FQ后就能下载了,FQ方法不赘述.
- 我现在对Git的认识
由于时间关系,我还没能真正的了解什么是Git,只是大致的了解了一下,并且在网上查阅了资料,做了一些总结,以便进一步研读. Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项 ...
- Beat(2/7)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(2/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 整理博客 做了点商家数据表格 接下来的计划 做 ...
- Week2-作业1——关于阅读《构建之法》第1、2、16章的疑问与感悟
关于阅读<构建之法>第1.2.16章的疑问与感悟 术语解释: 第2章,23页 什么是代码覆盖率? ———————————————————— 在测试中的代码覆盖率是指,你运行测试用例后,走过 ...