C# 读取.p12证书签名
来源:互联网 发布:稀疏矩阵聚类 编辑:程序博客网 时间:2024/04/30 03:16
正在开发一款生活客的android手机客户端,需要对接网银的支付接口;
悲催的是 我们服务器端用的是.net 开发,而网银用的是java rsa 加密,提供了.jks的证书 。
因为之前都没有接触过rsa加密,更别说.net 和java互通了,网银方面也只有一家商户出现过和我们类似的问题,感觉一头雾水,经过与网银的协调,他们给了我一个.p12格式的证书,这个证书符合x509体系。
然后又经过了漫长的资料查询 .net 读取.p12格式的证书 代码如下
X509Certificate2 cert2 = new X509Certificate2(HttpContext.Current.Server.MapPath(@"\config\TESTMERCHANT.p12"), "1"); RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert2.PrivateKey;
/// <summary> /// 签名 /// </summary> /// <param name="content">需要签名的内容</param> /// <param name="privateKey">私钥</param> /// <returns></returns> public static string sign(string content,RSACryptoServiceProvider rsa) { RSACryptoServiceProvider crsa = rsa; //明文转化为字节数组 byte[] Data = Encoding.UTF8.GetBytes(content); ; byte[] signData = crsa.SignData(Data, "sha1"); //不要转化成64位字符串,直接对byte进行16进制转化 return bytesToHexStr(signData); } //字节转化为16进制字符串 public static char[] bcdLookup = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; public static String bytesToHexStr(byte[] bcd) { String s = ""; for (int i = 0; i < bcd.Length; i++) { s += (bcdLookup[(((byte)bcd[i]) >> 4) & 0x0f]); s += (bcdLookup[(byte)bcd[i] & 0x0f]); } return s; }
这样经过实验 java 生成的签名 就和 。net生成的签名一样了
还有就是
X509Certificate2 cert2 = new X509Certificate2(HttpContext.Current.Server.MapPath(@"\config\TESTMERCHANT.p12"), "1"); string prikey= cert2.PrivateKey.ToXmlString(true);
用cert2直接生成私钥的话 会报错“该项不适于在指定状态下使用”, 具体原因可能是由于java和。net生成加密的长度不一样吧。解决方法没有找到 ,但可以忽略这步直接用RSACryptoServiceProvider
java 和 。net加密的互通就不多说了网上还是有的,这里只说签名了,注意一点 java的证书要转换成 。net可识别的x509体系的证书,互通的话 java生成的私钥及公钥 要转换一下
- C# 读取.p12证书签名
- p12证书转keystore签名
- java读取*.p12证书的信息
- 生成p12自签名数字证书&使用p12证书为apk签名
- 生成p12自签名数字证书&使用p12证书为apk签名
- java使用p12证书签名、验签、加密、解密
- p12证书
- p12证书
- 将keystore签名文件转为flash builder用到的p12签名证书
- 解析P12证书
- p12生成pem证书
- p12生成pem证书
- p12生成pem证书
- 证书p12的生成
- iOS证书p12文件
- 导出.p12证书文件
- cer证书,p12证书相关
- cer证书,p12证书相关
- 数组标识符a和&a表示意义的区别
- [iOS]使用NSProxy实现消息转发机制,模拟多重继承
- java的堆与栈(内存分配策略)
- 解决 Jersey 客户端提交中文参数乱码
- 再见腾讯,创业我来了!!!
- C# 读取.p12证书签名
- BI称Facebook手机将采用WP系统
- drupal7 路径转换函数
- 不打印背景色,想打印出表格的线的TABLE设置
- 送给“苦逼”的IT人系列
- Android VLC的编译
- [Linux]: Linux下如何探测一个文件系统的类型
- xml布局和动态布局结合使用
- hibernate SQLQuery