C#实现标准JAVA的Md5withRsa算法
2015-06-19 20:03
507 查看
确认可行的方法
public static String pfxpath = @"E:\xxx.pfx";
public static String cerpath = @"E:\xxxx.cer";
public static String pfxpassword = "111111";
/// <summary>
/// 签名
/// </summary>
/// <param name="xml">xml数据</param>
/// <returns>签名数据</returns>
public static String signData(String xml)
{
Console.WriteLine("加载数字证书私钥:"+ pfxpath + "证书密码:" + pfxpassword);
//签名
Console.WriteLine("--------开始使用私钥创建例子");
Console.WriteLine("--------需要签名的:" + xml);
// X509Certificate2 objx5092 = new X509Certificate2(pfxpath, pfxpassword); //当前用户存储,本地测试
X509Certificate2 objx5092 = new X509Certificate2(pfxpath, pfxpassword,X509KeyStorageFlags.MachineKeySet); //本地存储,服务器测试(windows server2008)要使用这个
RSACryptoServiceProvider rsa = objx5092.PrivateKey as RSACryptoServiceProvider;
byte[] data = Encoding.GetEncoding("GBK").GetBytes(xml);
byte[] hashValue = rsa.SignData(data, "MD5");
string msg = Convert.ToBase64String(hashValue);
Console.WriteLine("--------得到:" + msg);
return msg;
}
///
/// 解签
/// </summary>
/// <param name="signData">解签数据</param>
/// <returns>是否成功</returns>
public bool verifyData(String msg, String check)
{
byte[] msgByte = System.Convert.FromBase64String(msg);
byte[] checkByte = System.Convert.FromBase64String(check);
X509Certificate2 pub = new X509Certificate2(cerpath);
RSACryptoServiceProvider rsaPublic = pub.PublicKey.Key as RSACryptoServiceProvider;
return rsaPublic.VerifyData(msgByte, "MD5", checkByte);
}
此方式等同于JAVA mad5withrsa
public static String pfxpath = @"E:\xxx.pfx";
public static String cerpath = @"E:\xxxx.cer";
public static String pfxpassword = "111111";
/// <summary>
/// 签名
/// </summary>
/// <param name="xml">xml数据</param>
/// <returns>签名数据</returns>
public static String signData(String xml)
{
Console.WriteLine("加载数字证书私钥:"+ pfxpath + "证书密码:" + pfxpassword);
//签名
Console.WriteLine("--------开始使用私钥创建例子");
Console.WriteLine("--------需要签名的:" + xml);
// X509Certificate2 objx5092 = new X509Certificate2(pfxpath, pfxpassword); //当前用户存储,本地测试
X509Certificate2 objx5092 = new X509Certificate2(pfxpath, pfxpassword,X509KeyStorageFlags.MachineKeySet); //本地存储,服务器测试(windows server2008)要使用这个
RSACryptoServiceProvider rsa = objx5092.PrivateKey as RSACryptoServiceProvider;
byte[] data = Encoding.GetEncoding("GBK").GetBytes(xml);
byte[] hashValue = rsa.SignData(data, "MD5");
string msg = Convert.ToBase64String(hashValue);
Console.WriteLine("--------得到:" + msg);
return msg;
}
///
/// 解签
/// </summary>
/// <param name="signData">解签数据</param>
/// <returns>是否成功</returns>
public bool verifyData(String msg, String check)
{
byte[] msgByte = System.Convert.FromBase64String(msg);
byte[] checkByte = System.Convert.FromBase64String(check);
X509Certificate2 pub = new X509Certificate2(cerpath);
RSACryptoServiceProvider rsaPublic = pub.PublicKey.Key as RSACryptoServiceProvider;
return rsaPublic.VerifyData(msgByte, "MD5", checkByte);
}
此方式等同于JAVA mad5withrsa
相关文章推荐
- 在JAVA中目录列表器file的应用及Matcher对象与Pattern对象的使用
- Java引用类型具体解释
- Struts2开发步骤
- JAVA推箱子游戏(一)
- Java学习日记之掌控硬盘(1)
- Eclipse各种抓狂问题集锦(一)
- Java小白手记:SSH
- Java小白手记:SSH
- JAVA判断文件编码类型
- Java环境变量设置
- [置顶] java版多线程下载
- [置顶] 自动更具数据库表来生成.java文件的小工具
- [置顶] java值传递
- java bean和xml相互转换
- java bean和xml相互转换
- Java魔法堂:String.format详解
- 我对java继承的理解
- java对象的复制
- c#委托与java处理
- java对象的复制