.net 哈希计算、签名与验签

.net 哈希计算、签名与验签

一、算法

哈希算法目前有以几种 1、sha256 2.sha384 3.sha512 数值越大,安全性越高,但计算速度越慢,需要在速度与效率之间进行选择,通常要求不高时,用sha256即可。

二、计算字符串的哈希值

 byte[] buff = new byte[512];
 buff = Encoding.UTF8.GetBytes("花木成畦手自栽花木成畦手自栽花木成畦手自栽花木成畦手自栽撒旦发射点发".ToCharArray());
 byte[] bt=  sh256.ComputeHash(buff);
 string s64=Convert.ToBase64String(bt);

三、计算流的哈希值

 System.IO.FileStream file = System.IO.File.Open("d:\\km.txt",FileMode.Open);
 bt = sh256.ComputeHash(file, false);
 s= Convert.ToBase64String(bt);

四、对哈希值签名

 string s = _config.GetValue<string>("RSAPrivateKey");
 k0=Convert.FromBase64String(s);
 RSA rsa= RSA.Create();
 int i;
 rsa.ImportRSAPrivateKey(k0, out i); 
 k1=rsa.SignHash(bt,System.Security.Cryptography.HashAlgorithmName.SHA256,RSASignaturePadding.Pkcs1);

五、对哈希值验签

 s = _config.GetValue<string>("RSAPublicKey");
 k0 = Convert.FromBase64String(s);
 rsa.ImportRSAPublicKey(k0, out i);
bool b = rsa.VerifyHash(bt, k1, System.Security.Cryptography.HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);

六、总结

对互联网上需要传递的信息,特别是与商品交易有关的信息,发送与接收方需要进行签名认证。在日常工作中,需要对交易信息、合同信息等需要进行签名。如果直接对文本进行签名,则计算量十分大,影响网页响应。若先计算哈希值,再对哈希值(32字节)进行签名,则计算量很小,传输速度几乎不受影响。由于哈希值的(近似)唯一性,基本就可以认定签名有效。在保证安全的前提下,大大提高了网络传输效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值