这是很久以前的写的一篇博客了,今天把他重新找出来整理一下发布到博客园

当时对接银联的时候搞了很久都没搞出来,后来一个偶然的机会发现类似的一个代码参考了一下终于弄好了

这段代码主要是实现了C#服务端对接手机银联的java端的接口的签名

希望可以帮到大家

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography; namespace MD5WithRSATest
{
public class MD5WithRSA
{
private static char[] bcdLookup = { '', '', '', '', '', '', '', '', '', '', 'a', 'b', 'c', 'd', 'e', 'f' }; /// <summary>
/// 返回MD5WithRSA的签名字符串
/// </summary>
/// <param name="fileName">pfx证书文件的路径</param>
/// <param name="password">pfx证书密码</param>
/// <param name="strdata">待签名字符串</param>
/// <param name="encoding">字符集,默认为ISO-8859-1</param>
/// <returns>返回MD5WithRSA的签名字符串</returns>
public static string SignData(string fileName, string password, string strdata, string encoding = "ISO-8859-1")
{
X509Certificate2 objx5092;
if (string.IsNullOrWhiteSpace(password))
{
objx5092 = new X509Certificate2(fileName);
}else
{
objx5092 = new X509Certificate2(fileName, password);
}
RSACryptoServiceProvider rsa = objx5092.PrivateKey as RSACryptoServiceProvider;
byte[] data = Encoding.GetEncoding(encoding).GetBytes(strdata);
byte[] hashvalue = rsa.SignData(data, "MD5");//为证书采用MD5withRSA 签名
return bytesToHexStr(hashvalue);///将签名结果转化为16进制字符串
}
/// <summary>
/// 将签名结果转化为16进制字符串
/// </summary>
/// <param name="bcd">签名结果的byte数字</param>
/// <returns>16进制字符串</returns>
private static string bytesToHexStr(byte[] bcd)
{
StringBuilder s = new StringBuilder(bcd.Length * );
for (int i = ; i < bcd.Length; i++)
{
s.Append(bcdLookup[(bcd[i] >> ) & 0x0f]);
s.Append(bcdLookup[bcd[i] & 0x0f]);
}
return s.ToString();
}
}
}

C#实现MD5WITHRSA签名的更多相关文章

  1. Delphi RSA签名与验签【支持SHA1WithRSA(RSA1)、SHA256WithRSA(RSA2)和MD5WithRSA签名与验签】

    作者QQ:(648437169) 点击下载➨ RSA签名与验签 [delphi RSA签名与验签]支持3种方式签名与验签(SHA1WithRSA(RSA1).SHA256WithRSA(RSA2)和M ...

  2. Java利用MD5WithRSA签名及DESede加密

    前言:近期公司做数据加密及签名,整理如下: 一.数字签名. 是只有信息的发送者才能产生的别人无法伪造的一段数字串,具有不可抵赖性,可验证信息完整性的一种手段. 签名不可伪造:其他人因为没有对应的私钥, ...

  3. MAC上反编译android apk---apktool, dex2jar, jd-jui安装使用(含手动签名)

    前文 介绍了在Windows平台利用强大的APK-Multi-Tool进行反编译apk,修改smali源码后再回编译成apk的流程,最近受人之托,破解个apk,所幸的是所用到的这三个软件都是跨平台的, ...

  4. Android中的Apk的加固(加壳)原理解析和实现

    一.前言 今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理.现阶段.我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk, ...

  5. mac apktool配置

    Apktool:http://ibotpeaches.github.io/Apktool/install/ 最新版本2.0.1 dex2jar: https://github.com/pxb1988/ ...

  6. Android安全——加固原理

    一.前言 今天来介绍一下Android中的如何对Apk进行加固的原理.现阶段.我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结果被人反编译了,那心情真心不舒服.虽 ...

  7. Android中的Apk的加固(加壳)原理解析和实现(转)

    一.前言 今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理.现阶段.我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk, ...

  8. android 加固防止反编译-重新打包

    http://blog.csdn.net/u010921385/article/details/52505094 1.需要加密的Apk(源Apk) 2.壳程序Apk(负责解密Apk工作) 3.加密工具 ...

  9. 【转】Android中的Apk的加固(加壳)原理解析和实现

    一.前言 今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理.现阶段.我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk, ...

随机推荐

  1. 关于ubuntu 16.04 docker常用命令

    1.sudo docker ps -a 查看当前docker实例的信息: CONTAINER ID        IMAGE               COMMAND                 ...

  2. c# aop讲解

    先说下场景,C#中为什么要使用Aop,而我又是在哪里使用Aop? 本人只是想拦截实体类的Set的方法,然后在Set之前,调用一下其它方法,把值赋给另一个对象. 而我做的都是在实体类的基类里处理: 比如 ...

  3. 深入Mybatis配置文件

    Configuration是干嘛的 Configuration就像是Mybatis的总管,Mybatis的所有配置信息都存放在这里,此外,它还提供了设置这些配置信息的方法.Configuration可 ...

  4. python--flask学习1

    1 windows/unix得安装 http://www.pythondoc.com/flask-mega-tutorial/helloworld.html http://www.pythondoc. ...

  5. Flutter实战视频-移动电商-15.首页_商品推荐模块编写

    15.首页_商品推荐模块编写 商品推荐,我们做成可以横向滚动的 分析: 上面是标题,下面是ListView,里面是一个Column, column分三层,第一是图片,第二是价格,第三是市场价格 小细节 ...

  6. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 27. CICD Azure DevOps

    VSTS做持续集成 后来改名叫做Azure Deveps https://azure.microsoft.com/zh-cn/services/devops/ 这是中文的地址 创建一个项目 名称.描述 ...

  7. jQuery 如何获取ASP.NET服务器控件的值

    由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,总结有以下3种方法: 服务器控件代码:<asp:TextBox ID="txtUserID ...

  8. Qt解析CSV文件

    最近需要解析Excel文件,于是顺带写了解析CSV的代码 定义数据类型LX::Sheet #ifndef LX_H #define LX_H #include <QString> #inc ...

  9. 51nod1242【矩阵快速幂】

    基础题.. wa在n的范围需要用long long = =.长个记性 #include<bits/stdc++.h> using namespace std; typedef long l ...

  10. UGUI 锚点坑

    ----------------------------------------------------------------- 关键点:4个实心蓝点距离雪花4瓣的距离永远不变 锚点Anchors: ...