数字签名简单的说过程如下:
发送者A向接受者B发送数据,A首先将数据进行散列函数运算,生成信息摘要,然后用私钥进行加密,生成签名信息,A将要发送的信息与签名信息一起发送给B,B接收到后,也将数据进行散列运行,并生成信息摘要,然后用公钥与签名进行验证核对信息是否被撰改。
asp.net实现数字签名实例代码:
需引入命名空间:using System.Security.Cryptography;
| 以下为引用的内容: /// <summary> /// 生成签名 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button1_Click(object sender, EventArgs e) { DSACryptoServiceProvider objdsa = new DSACryptoServiceProvider(); objdsa.FromXmlString(tbxKey.Text); byte[] source = System.Text.UTF8Encoding.UTF8.GetBytes(tbxContent.Text); //数字签名 tbxSign.Text = BitConverter.ToString(objdsa.SignData(source)); } /// <summary> /// 随机生成密钥 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btncreateMY_Click(object sender, EventArgs e) { DSACryptoServiceProvider objdsa = new DSACryptoServiceProvider(); tbxcreateMY_publicKey.Text = objdsa.ToXmlString(false); tbxcreateMY_key.Text = objdsa.ToXmlString(true); } /// <summary> /// 验证签名 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button3_Click(object sender, EventArgs e) { DSACryptoServiceProvider objdsa = new DSACryptoServiceProvider(); byte[] fileHashValue = new SHA1CryptoServiceProvider().ComputeHash(System.Text.UTF8Encoding.UTF8.GetBytes(tbxContentYZ.Text)); string[] strSplit = tbxSignYZ.Text.Split('-'); byte[] SignedHash = new byte[strSplit.Length]; for (int i = 0; i < strSplit.Length; i++) SignedHash[i] = byte.Parse(strSplit[i], System.Globalization.NumberStyles.AllowHexSpecifier); objdsa.FromXmlString(tbxPublickeyYZ.Text); bool ret = objdsa.VerifySignature(fileHashValue, SignedHash); Qcd.Core.Web.Messages.ShowDialog(ret.ToString()); } |
html页面代码:
以下为引用的内容: <form /> </form>
|
http://www.cn-web.com/shtml/article/net/quer/2009/07/28/921.shtml
转自:http://www.cnblogs.com/skyaspnet/archive/2010/10/06/1844610.html
相关文章:
-
2021-07-24
-
2022-12-23
-
2021-04-14
-
2022-12-23
-
2021-09-01
-
2021-12-13
-
2022-12-23
-
2022-12-23