此demo包含两个文件,建立一个解决方案,然后建立两个文件,一个为form,一个为class,把代码分别复制进去即可
【程序编程相关:JDBC接口技术】 【推荐阅读:对话框到子控件的切换】rsa正确的执行过程: 【扩展信息:rpc的新架构】 加密解密: 1.获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 2.加密 3.解密 签名与验证: 签名: 1.获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 2.获取待签名的hash码 3.签名 其中,1与2的步骤无所谓,在本例中,我们将对txtsource里的内容进行签名,也可以对文件进行签名 验证签名: 1.获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 2.获取待验证签名的hash码 3.获取签名的字串,这里签名的字串存储在m_strencryptedsignaturedata变量中,在demo中必须通过签名才能获得这个字串,因此需要先执行签名,当然也可以更改之后通过别的方式获得 4.验证 其中,1与2的步骤无所谓,在本例中,我们将对txtsource里的内容进行签名验证,也可以对文件进行签名验证 如果是文件,取得文件之后把文件的内容以byte[]的方式代入即可 /////////////////////////////////////////////////////////////////////////////////////////////////////////// //rsacryption.cs /////////////////////////////////////////////////////////////////////////////////////////////////////////// using system; using system.text; using system.security.cryptography;namespace rsaapplication
{ /// <summary> /// rsacryption 的摘要说明. /// </summary> public class rsacryption { #region 构造函数public rsacryption()
{ // // todo: 在此处添加构造函数逻辑 // } #endregion #region rsa 加密解密#region rsa 的密钥产生
//rsa 的密钥产生 //产生私钥 与公钥 public void rsakey(out string xmlkeys,out string xmlpublickey) { try { system.security.cryptography.rsacryptoserviceprovider rsa=new rsacryptoserviceprovider(); xmlkeys=rsa.toxmlstring(true); xmlpublickey = rsa.toxmlstring(false); } catch(exception ex) { throw ex; } } #endregion #region rsa的加密函数 //############################################################################## //rsa 方式加密 //说明key必须是xml的行式,返回的是字符串 //在有一点需要说明!!该加密方式有 长度 限制的!! //##############################################################################//rsa的加密函数
public string rsaencrypt(string xmlpublickey,string m_strencryptstring ) { try { byte[] plaintextbarray; byte[] cyphertextbarray; string result; system.security.cryptography.rsacryptoserviceprovider rsa=new rsacryptoserviceprovider(); rsa.fromxmlstring(xmlpublickey); plaintextbarray = (new unicodeencoding()).getbytes(m_strencryptstring); cyphertextbarray = rsa.encrypt(plaintextbarray, false); result=convert.tobase64string(cyphertextbarray); return result; } catch(exception ex) { throw ex; } } //rsa的加密函数 public string rsaencrypt(string xmlpublickey,byte[] encryptstring ) { try { byte[] cyphertextbarray; string result; system.security.cryptography.rsacryptoserviceprovider rsa=new rsacryptoserviceprovider(); rsa.fromxmlstring(xmlpublickey); cyphertextbarray = rsa.encrypt(encryptstring, false); result=convert.tobase64string(cyphertextbarray); return result; } catch(exception ex) { throw ex; } } #endregion#region rsa的解密函数
//rsa的解密函数 public string rsadecrypt(string xmlprivatekey, string m_strdecryptstring ) { try { byte[] plaintextbarray; byte[] dyphertextbarray; string result; system.security.cryptography.rsacryptoserviceprovider rsa=new rsacryptoserviceprovider(); rsa.fromxmlstring(xmlprivatekey); plaintextbarray =convert.frombase64string(m_strdecryptstring); dyphertextbarray=rsa.decrypt(plaintextbarray, false); result=(new unicodeencoding()).getstring(dyphertextbarray); return result; ... 下一页