第一个问题 怎么获取私钥并进行 md5withRSA 加密
要加密的字符串 如:123456abc
为啥我获取到的私钥.ToString()是 System.Security.Cryptography.RSACryptoServiceProvider这个类型的小白确实不懂 证书是.pfx格式的
有做过相关的没?
求思路 求代码话说java的例子大大的有 就是C#的找了N久没发现Bouncy Castle这个是英文的鸭梨山大
要加密的字符串 如:123456abc
为啥我获取到的私钥.ToString()是 System.Security.Cryptography.RSACryptoServiceProvider这个类型的小白确实不懂 证书是.pfx格式的
有做过相关的没?
求思路 求代码话说java的例子大大的有 就是C#的找了N久没发现Bouncy Castle这个是英文的鸭梨山大
解决方案 »
- 如何在指定的位置输出HTML?
- 两个div重合后,空白怎么去掉?
- 如果有多个web项目,我只想要他们共同读其中某个项目的web.config。有啥办法吗?
- string ss = (string)DataBinder.Eval(e.Item.DataItem, "SecID");有错吗?
- 想在asp.net页面实现页面嵌套,请高手指教!
- Visual Studio2013的WSAT在哪里?Website菜单里没有找到啊?
- 郁闷小问题,怎么调用这个函数??
- 如何同时搜索几个字段结构相同的表并输出数据
- help
- 由CrystalReport导出HTML格式时乱码,如何解决?
- 菜鸟求教Drawstring参数问题
- 求救中。。。.net 403错误
X509Certificate2 objx5092 = new X509Certificate2(Server.MapPath("/Member/Webservice/123.pfx"),"123456");
//下面是刚从网上找的 不知道正不正确
System.Security.Cryptography.AsymmetricAlgorithm aal = objx5092.PrivateKey;
try
{ System.Security.Cryptography.RSACryptoServiceProvider rsa = objx5092.PrivateKey.KeyExchangeAlgorithm;
byte[] data = Encoding.ASCII.GetBytes("aaaaa");
byte[] signature = System.Convert.FromBase64String(token);
rsa.VerifyData(data, "MD5", signature);
}
catch (Exception aaa)
{
}
用E(X)表示用RSA算法对明文X加密(即用公钥编码),D(X)表示用RSA算法对密文X解密(即用私钥编码),用H(X)表示用MD5(或其它散列算法)对X散列:
对文档X签名:
R = D(H(X));
验证文档X和签名R是否一致:
H(X) == E(R)
由于D要用私钥而E只用公钥,结果只有私钥持有者可以签名,而所有的公钥持有者都可以进行验证。其实只用RSA就可以完成签名:
R = D(X)
X == E(R)
之所以加入散列步骤主要是为了:
1:减小签名长度。
2:防止对RSA的选择明文攻击原文地址
看看这个的
说明 图例 及代码
http://jasondct.blog.163.com/blog/static/818206732011113102453543/
http://jasondct.blog.163.com/blog/static/81820673201111310133483/
try
{
//创建证书文件
X509Certificate2 objx5092 = new X509Certificate2(Server.MapPath("/Member/Webservice/123.pfx"),"123456");//取出私钥
System.Security.Cryptography.RSACryptoServiceProvider rsa = objx5092.PrivateKey as System .Security .Cryptography .RSACryptoServiceProvider;
//将要签名的要素转化为byte[]
byte[] data = Encoding.ASCII.GetBytes("aaaaa");
//md5 你懂的 返回byte[]
byte[] bb = rsa .SignData(data,"MD5");
//将md5 之后的数据进行base64编码 必须的 返回的就是已签名的数据
byte[] signature = System.Convert.FromBase64String(bb);
//data 已签名的数据 signature 要验证的数据
//bool str = rsa.VerifyData(data, "MD5", signature);//这一步俺不做 俺只做签名 验证那不是俺干的事 //不知道这样对不对 验证中...........................................................................................................................................
}
catch
{
}
都深藏不露的高手啊
X509Certificate2 objx5092 = new X509Certificate2(@"C:\Users\Administrator\Desktop\ddddd.pfx","12345");
System.Security.Cryptography.RSACryptoServiceProvider rsa = objx5092.PrivateKey as RSACryptoServiceProvider; byte[] data = Encoding.UTF8.GetBytes("Today");
byte[] hashvalue = rsa.SignData(data, "MD5"); X509Certificate2 pub = new X509Certificate2(@"C:\Users\Administrator\Desktop\ppppp.cer");
RSACryptoServiceProvider rsaPublic = pub.PublicKey.Key as RSACryptoServiceProvider;
bool a = rsaPublic.VerifyData(data, "MD5", hashvalue);这样才是一来一回。
ddddd.pfx是带私钥可加密的。
ppppp.cer是公钥证书。哈哈 我可不是什么高手。我是打酱油的。
就剩下ssl 客户端部署了ssl 访问Webservice o(︶︿︶)o 唉日落结贴
是webservice的地址类似https://host:port/servicename这样子的么?
https://192.168.8.1:90/CardWebServiceProvider?wsdl
我用的是这样子ssl 我google了多少 java版的啊 C#版的绝迹了 密钥库,证书库 这些到底怎么用啊 ...
如果webservice是hhtps的,那C#在用这个webservice的时候如果是config配置型的,要跟服务器设置成一样的协议。
如果是直接的Request的,那么需要一段代码类似下面的,来验证证书public static void Main(string[] argv)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ServerSSLCertificateValidation);
}
private bool ServerSSLCertificateValidation(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors errors)
{ // Always accept
return true;
}
内部服务错误一般都是程序throw exception了,要不是就是web site应用池的用户权限不够运行你的程序的。说到底还是程序异常了。往你的Global.asax里面的On Error还是On Exception方法来的里面写个文本输出,记录下Exception的messge,看看到底怎么了。