非对称加密RSA的应用详解 (2)

.Net中的加密操作所涉及的对象都在命名空间System.Security.Cryptography下,所以请先在你的程序中添加using System.Security.Cryptography; 其中,RSA加密算法由RSACryptoServiceProvider对象实现。下面的代码分别实现了数据的加密解密和签名与验证。

1: string PublicKey, PrivateKey; 2: RSACryptoServiceProvider rsaProvider; 3: void Initial() 4: { 5: //声明一个RSA算法的实例,由RSACryptoServiceProvider类型的构造函数指定了密钥长度为1024位 6: //实例化RSACryptoServiceProvider后,RSACryptoServiceProvider会自动生成密钥信息。 7: rsaProvider = new RSACryptoServiceProvider(1024); 8: //将RSA算法的公钥导出到字符串PublicKey中,参数为false表示不导出私钥 9: PublicKey = rsaProvider.ToXmlString(false); 10: //将RSA算法的私钥导出到字符串PrivateKey中,参数为true表示导出私钥 11: PrivateKey = rsaProvider.ToXmlString(true); 12:  13:  14: byte[] EncryptData(byte[] data) 15: { 16: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024); 17: //将公钥导入到RSA对象中,准备加密; 18: rsa.FromXmlString(PublicKey); 19: //对数据data进行加密,并返回加密结果; 20: //第二个参数用来选择Padding的格式 21: return rsa.Encrypt(data, false); 22: } 23:  24: byte[] DecryptData(byte[] data) 25: { 26: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024); 27: //将私钥导入RSA中,准备解密; 28: rsa.FromXmlString(PrivateKey); 29: //对数据进行解密,并返回解密结果; 30: return rsa.Decrypt(data, false); 31: } 32:  33: byte[] Sign(byte[] data) 34: { 35: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024); 36: //导入私钥,准备签名 37: rsa.FromXmlString(PrivateKey); 38: //将数据使用MD5进行消息摘要,然后对摘要进行签名并返回签名数据 39: return rsa.SignData(data, "MD5"); 40: } 41:  42: bool Verify(byte[] data, byte[] Signature) 43: { 44: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024); 45: //导入公钥,准备验证签名 46: rsa.FromXmlString(PublicKey); 47: //返回数据验证结果 48: return rsa.VerifyData(data, "MD5", Signature); 49: }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzyjdg.html