首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网页制作
RSA加密解密及RSA签名和验证-.NET教程,安全和优化
作者:网友供稿 点击:300
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
此demo包含两个文件,建立一个解决方案,然后建立两个文件,一个为form,一个为class,把代码分别复制进去即可

rsa正确的执行过程:
加密解密:
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;
}
catch(exception ex)
{
throw ex;
}
}

//rsa的解密函数
public string rsadecrypt(string xmlprivatekey, byte[] decryptstring )
{
try
{
byte[] dyphertextbarray;
string result;
system.security.cryptography.rsacryptoserviceprovider rsa=new rsacryptoserviceprovider();
rsa.fromxmlstring(xmlprivatekey);
dyphertextbarray=rsa.decrypt(decryptstring, false);
result=(new unicodeencoding()).getstring(dyphertextbarray);
return result;
}
catch(exception ex)
{
throw ex;
}
}
#endregion

#endregion

#region rsa数字签名

#region 获取hash描述表
//获取hash描述表
public bool gethash(string m_strsource, ref byte[] hashdata)
{
try
{
//从字符串中取得hash描述
byte[] buffer;
system.security.cryptography.hashalgorithm md5 = system.security.cryptography.hashalgorithm.create("md5");
buffer = system.text.encoding.getencoding("gb2312").getbytes(m_strsource);
hashdata = md5.computehash(buffer);

return true;
}
catch(exception ex)
{
throw ex;
}
}

//获取hash描述表
public bool gethash(string m_strsource, ref string strhashdata)
{
try
{
//从字符串中取得hash描述
byte[] buffer;
byte[] hashdata;
system.security.cryptography.hashalgorithm md5 = system.security.cryptography.hashalgorithm.create("md5");
buffer = system.text.encoding.getencoding("gb2312").getbytes(m_strsource);
hashdata = md5.computehash(buffer);

strhashdata = convert.tobase64string(hashdata);
return true;
}
catch(exception ex)
{
throw ex;
}
}

//获取hash描述表
public bool gethash(system.io.filestream objfile, ref byte[] hashdata)
{
try
{
//从文件中取得hash描述
system.security.cryptography.hashalgorithm md5 = system.security.cryptography.hashalgorithm.create("md5");
hashdata = md5.computehash(objfile);
objfile.close();

return true;
}
catch(exception ex)
{
throw ex;
}
}

//获取hash描述表
public bool gethash(system.io.filestream objfile, ref string strhashdata)
{
try
{
//从文件中取得hash描述
byte[] hashdata;
system.security.cryptography.hashalgorithm md5 = system.security.cryptography.hashalgorithm.create("md5");
hashdata = md5.computehash(objfile);
objfile.close();

strhashdata = convert.tobase64string(hashdata);

return true;
}
catch(exception ex)
{
throw ex;
}
}
#endregion

#region rsa签名
//rsa签名
public bool signatureformatter(string p_strkeyprivate, byte[] hashbytesignature, ref byte[] encryptedsignaturedata)
{
try
{
system.security.cryptography.rsacryptoserviceprovider rsa = new system.security.cryptography.rsacryptoserviceprovider();

rsa.fromxmlstring(p_strkeyprivate);
system.security.cryptography.rsapkcs1signatureformatter rsaformatter = new system.security.cryptography.rsapkcs1signatureformatter(rsa);
//设置签名的算法为md5
rsaformatter.sethashalgorithm("md5");
//执行签名
encryptedsignaturedata = rsaformatter.createsignature(hashbytesignature);

return true;
}
catch(exception ex)
{
throw ex;
}
}

//rsa签名
public bool signatureformatter(string p_strkeyprivate, byte[] hashbytesignature, ref string m_strencryptedsignaturedata)
{
try
{
byte[] encryptedsignaturedata;

system.security.cryptography.rsacryptoserviceprovider rsa = new system.security.cryptography.rsacryptoserviceprovider();

rsa.fromxmlstring(p_strkeyprivate);
system.security.cryptography.rsapkcs1signatureformatter rsaformatter = new system.security.cryptography.rsapkcs1signatureformatter(rsa);
//设置签名的算法为md5
rsaformatter.sethashalgorithm("md5");
//执行签名
encryptedsignaturedata = rsaformatter.createsignature(hashbytesignature);

m_strencryptedsignaturedata = convert.tobase64string(encryptedsignaturedata);

return true;
}
catch(exception ex)
{
throw ex;
}
}

//rsa签名
public bool signatureformatter(string p_strkeyprivate, string m_strhashbytesignature, ref byte[] encryptedsignaturedata)
{
try
{
byte[] hashbytesignature;

hashbytesignature = convert.frombase64string(m_strhashbytesignature);
system.security.cryptography.rsacryptoserviceprovider rsa = new system.security.cryptography.rsacryptoserviceprovider();

rsa.fromxmlstring(p_strkeyprivate);
system.security.cryptography.rsapkcs1signatureformatter rsaformatter = new system.security.cryptography.rsapkcs1signatureformatter(rsa);
//设置签名的算法为md5
rsaformatter.sethashalgorithm("md5");
//执行签名
encryptedsignaturedata = rsaformatter.createsignature(hashbytesignature);

return true;
}
catch(exception ex)
{
throw ex;
}
}

//rsa签名
public bool signatureformatter(string p_strkeyprivate, string m_strhashbytesignature, ref string m_strencryptedsignaturedata)
{
try
{
byte[] hashbytesignature;
byte[] encryptedsignaturedata;

hashbytesignature = convert.frombase64string(m_strhashbytesignature);
system.security.cryptography.rsacryptoserviceprovider rsa = new system.security.cryptography.rsacryptoserviceprovider();

rsa.fromxmlstring(p_strkeyprivate);
system.security.cryptography.rsapkcs1signatureformatter rsaformatter = new system.security.cryptography.rsapkcs1signatureformatter(rsa);
//设置签名的算法为md5
rsaformatter.sethashalgorithm("md5");
//执行签名
encryptedsignaturedata = rsaformatter.createsignature(hashbytesignature);

m_strencryptedsignaturedata = convert.tobase64string(encryptedsignaturedata);

return true;
}
catch(exception ex)
{
throw ex;
}
}
#endregion

#region rsa 签名验证

public bool signaturedeformatter(string p_strkeypublic, byte[] hashbytedeformatter, byte[] deformatterdata)
{
try
{
system.security.cryptography.rsacryptoserviceprovider rsa = new system.security.cryptography.rsacryptoserviceprovider();

rsa.fromxmlstring(p_strkeypublic);
system.security.cryptography.rsapkcs1signaturedeformatter rsadeformatter = new system.security.cryptography.rsapkcs1signaturedeformatter(rsa);
//指定解密的时候hash算法为md5
rsadeformatter.sethashalgorithm("md5");

if(rsadeformatter.verifysignature(hashbytedeformatter,deformatterdata))
{
return true;
}
else
{
return false;
}
}
catch(exception ex)
{
throw ex;
}
}

public bool signaturedeformatter(string p_strkeypublic, string p_strhashbytedeformatter, byte[] deformatterdata)
{
try
{
byte[] hashbytedeformatter;

hashbytedeformatter = convert.frombase64string(p_strhashbytedeformatter);

system.security.cryptography.rsacryptoserviceprovider rsa = new system.security.cryptography.rsacryptoserviceprovider();

rsa.fromxmlstring(p_strkeypublic);
system.security.cryptography.rsapkcs1signaturedeformatter rsadeformatter = new system.security.cryptography.rsapkcs1signaturedeformatter(rsa);
//指定解密的时候hash算法为md5
rsadeformatter.sethashalgorithm("md5");

if(rsadeformatter.verifysignature(hashbytedeformatter,deformatterdata))
{
return true;
}
else
{
return false;
}
}
catch(exception ex)
{
throw ex;
}
}

public bool signaturedeformatter(string p_strkeypublic, byte[] hashbytedeformatter, string p_strdeformatterdata)
{
try
{
byte[] deformatterdata;

system.security.cryptography.rsacryptoserviceprovider rsa = new system.security.cryptography.rsacryptoserviceprovider();

rsa.fromxmlstring(p_strkeypublic);
system.security.cryptography.rsapkcs1signaturedeformatter rsadeformatter = new system.security.cryptography.rsapkcs1signaturedeformatter(rsa);
//指定解密的时候hash算法为md5
rsadeformatter.sethashalgorithm("md5");

deformatterdata =convert.frombase64string(p_strdeformatterdata);

if(rsadeformatter.verifysignature(hashbytedeformatter,deformatterdata))
{
return true;
}
else
{
return false;
}
}
catch(exception ex)
{
throw ex;
}
}

public bool signaturedeformatter(string p_strkeypublic, string p_strhashbytedeformatter, string p_strdeformatterdata)
{
try
{
byte[] deformatterdata;
byte[] hashbytedeformatter;

hashbytedeformatter = convert.frombase64string(p_strhashbytedeformatter);
system.security.cryptography.rsacryptoserviceprovider rsa = new system.security.cryptography.rsacryptoserviceprovider();

rsa.fromxmlstring(p_strkeypublic);
system.security.cryptography.rsapkcs1signaturedeformatter rsadeformatter = new system.security.cryptography.rsapkcs1signaturedeformatter(rsa);
//指定解密的时候hash算法为md5
rsadeformatter.sethashalgorithm("md5");

deformatterdata =convert.frombase64string(p_strdeformatterdata);

if(rsadeformatter.verifysignature(hashbytedeformatter,deformatterdata))
{
return true;
}
else
{
return false;
}
}
catch(exception ex)
{
throw ex;
}
}


#endregion
#endregion

}
}


///////////////////////////////////////////////////////////////////////////////////////////////////////////
//frmrsacryptiontest.cs
///////////////////////////////////////////////////////////////////////////////////////////////////////////

using system;
using system.drawing;
using system.collections;
using system.componentmodel;
using system.windows.forms;
using system.data;

namespace rsaapplication
{
/// <summary>
/// frmrsacryptiontest 的摘要说明。
/// </summary>
public class frmrsacryptiontest : system.windows.forms.form
{
#region 必需的设计器变量
/// <summary>
/// 必需的设计器变量
/// </summary>
private system.windows.forms.button btnbuildkey;
private system.windows.forms.textbox txtkeypublic;
private system.windows.forms.textbox txtkeyprivate;
private system.componentmodel.container components = null;

private system.windows.forms.button btnrsaencrypt;
private system.windows.forms.textbox txtrsadecrypt;
private system.windows.forms.button btnrsadecrypt;
private system.windows.forms.textbox txtsource;
private system.windows.forms.textbox txtrsaencrypt;
private system.windows.forms.button btnsignature;

private system.windows.forms.button btndeformatter;
private system.windows.forms.button btngethashsignature;
private system.windows.forms.button btngethashdeformatter;
private system.windows.forms.textbox txtsignature;
private system.windows.forms.textbox txtgethashsignature;
private system.windows.forms.textbox txtgethashdeformatter;


private string m_strkeyprivate = "";
private string m_strkeypublic = "";

private string m_strhashbytesignature = "";
private string m_strhashbytedeformatter = "";
private string m_strencryptedsignaturedata = "";
#endregion

#region 构造函数
public frmrsacryptiontest()
{
//
// windows 窗体设计器支持所必需的
//
initializecomponent();

//
// todo: 在 initializecomponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.dispose();
}
}
base.dispose( disposing );
}
#endregion

#region windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void initializecomponent()
{
this.btnbuildkey = new system.windows.forms.button();
this.txtkeypublic = new system.windows.forms.textbox();
this.txtkeyprivate = new system.windows.forms.textbox();
this.btnrsaencrypt = new system.windows.forms.button();
this.txtsource = new system.windows.forms.textbox();
this.txtrsaencrypt = new system.windows.forms.textbox();
this.txtrsadecrypt = new system.windows.forms.textbox();
this.btnrsadecrypt = new system.windows.forms.button();
this.btndeformatter = new system.windows.forms.button();
this.btnsignature = new system.windows.forms.button();
this.txtsignature = new system.windows.forms.textbox();
this.btngethashsignature = new system.windows.forms.button();
this.btngethashdeformatter = new system.windows.forms.button();
this.txtgethashsignature = new system.windows.forms.textbox();
this.txtgethashdeformatter = new system.windows.forms.textbox();
this.suspendlayout();
//
// btnbuildkey
//
this.btnbuildkey.location = new system.drawing.point(11, 17);
this.btnbuildkey.name = "btnbuildkey";
this.btnbuildkey.size = new system.drawing.size(77, 34);
this.btnbuildkey.tabindex = 0;
this.btnbuildkey.text = "产生密钥";
this.btnbuildkey.click += new system.eventhandler(this.btnbuildkey_click);
//
// txtkeypublic
//
this.txtkeypublic.location = new system.drawing.point(137, 11);
this.txtkeypublic.multiline = true;
this.txtkeypublic.name = "txtkeypublic";
this.txtkeypublic.size = new system.drawing.size(602, 44);
this.txtkeypublic.tabindex = 1;
this.txtkeypublic.text = "";
//
// txtkeyprivate
//
this.txtkeyprivate.location = new system.drawing.point(137, 58);
this.txtkeyprivate.multiline = true;
this.txtkeyprivate.name = "txtkeyprivate";
this.txtkeyprivate.size = new system.drawing.size(602, 44);
this.txtkeyprivate.tabindex = 2;
this.txtkeyprivate.text = "";
//
// btnrsaencrypt
//
this.btnrsaencrypt.location = new system.drawing.point(11, 157);
this.btnrsaencrypt.name = "btnrsaencrypt";
this.btnrsaencrypt.size = new system.drawing.size(77, 34);
this.btnrsaencrypt.tabindex = 3;
this.btnrsaencrypt.text = "rsa加密";
this.btnrsaencrypt.click += new system.eventhandler(this.btnrsaencrypt_click);
//
// txtsource
//
this.txtsource.location = new system.drawing.point(137, 108);
this.txtsource.multiline = true;
this.txtsource.name = "txtsource";
this.txtsource.size = new system.drawing.size(602, 44);
this.txtsource.tabindex = 4;
this.txtsource.text = "字串不能太长j——km,.ewm.m, .vkj中国福建";
//
// txtrsaencrypt
//
this.txtrsaencrypt.location = new system.drawing.point(137, 155);
this.txtrsaencrypt.multiline = true;
this.txtrsaencrypt.name = "txtrsaencrypt";
this.txtrsaencrypt.size = new system.drawing.size(602, 44);
this.txtrsaencrypt.tabindex = 5;
this.txtrsaencrypt.text = "";
//
// txtrsadecrypt
//
this.txtrsadecrypt.location = new system.drawing.point(137, 203);
this.txtrsadecrypt.multiline = true;
this.txtrsadecrypt.name = "txtrsadecrypt";
this.txtrsadecrypt.size = new system.drawing.size(602, 44);
this.txtrsadecrypt.tabindex = 6;
this.txtrsadecrypt.text = "";
//
// btnrsadecrypt
//
this.btnrsadecrypt.location = new system.drawing.point(11, 202);
this.btnrsadecrypt.name = "btnrsadecrypt";
this.btnrsadecrypt.size = new system.drawing.size(77, 34);
this.btnrsadecrypt.tabindex = 7;
this.btnrsadecrypt.text = "rsa解密";
this.btnrsadecrypt.click += new system.eventhandler(this.btnrsadecrypt_click);
//
// btndeformatter
//
this.btndeformatter.location = new system.drawing.point(11, 396);
this.btndeformatter.name = "btndeformatter";
this.btndeformatter.size = new system.drawing.size(77, 34);
this.btndeformatter.tabindex = 10;
this.btndeformatter.text = "rsa验证";
this.btndeformatter.click += new system.eventhandler(this.btndeformatter_click);
//
// btnsignature
//
this.btnsignature.location = new system.drawing.point(11, 297);
this.btnsignature.name = "btnsignature";
this.btnsignature.size = new system.drawing.size(77, 34);
this.btnsignature.tabindex = 9;
this.btnsignature.text = "rsa签名";
this.btnsignature.click += new system.eventhandler(this.btnsignature_click);
//
// txtsignature
//
this.txtsignature.location = new system.drawing.point(137, 298);
this.txtsignature.multiline = true;
this.txtsignature.name = "txtsignature";
this.txtsignature.size = new system.drawing.size(602, 44);
this.txtsignature.tabindex = 11;
this.txtsignature.text = "";
//
// btngethashsignature
//
this.btngethashsignature.location = new system.drawing.point(11, 252);
this.btngethashsignature.name = "btngethashsignature";
this.btngethashsignature.size = new system.drawing.size(117, 36);
this.btngethashsignature.tabindex = 13;
this.btngethashsignature.text = "获取哈稀码(签名)";
this.btngethashsignature.click += new system.eventhandler(this.btngethashsignature_click);
//
// btngethashdeformatter
//
this.btngethashdeformatter.location = new system.drawing.point(11, 348);
this.btngethashdeformatter.name = "btngethashdeformatter";
this.btngethashdeformatter.size = new system.drawing.size(117, 36);
this.btngethashdeformatter.tabindex = 14;
this.btngethashdeformatter.text = "获取哈稀码(验证)";
this.btngethashdeformatter.click += new system.eventhandler(this.btngethashdeformatter_click);
//
// txtgethashsignature
//
this.txtgethashsignature.location = new system.drawing.point(137, 251);
this.txtgethashsignature.multiline = true;
this.txtgethashsignature.name = "txtgethashsignature";
this.txtgethashsignature.size = new system.drawing.size(602, 44);
this.txtgethashsignature.tabindex = 15;
this.txtgethashsignature.text = "";
//
// txtgethashdeformatter
//
this.txtgethashdeformatter.location = new system.drawing.point(137, 346);
this.txtgethashdeformatter.multiline = true;
this.txtgethashdeformatter.name = "txtgethashdeformatter";
this.txtgethashdeformatter.size = new system.drawing.size(602, 44);
this.txtgethashdeformatter.tabindex = 16;
this.txtgethashdeformatter.text = "";
//
// frmrsacryptiontest
//
this.autoscalebasesize = new system.drawing.size(6, 14);
this.clientsize = new system.drawing.size(764, 444);
this.controls.add(this.txtgethashdeformatter);
this.controls.add(this.txtgethashsignature);
this.controls.add(this.txtsignature);
this.controls.add(this.txtrsadecrypt);
this.controls.add(this.txtrsaencrypt);
this.controls.add(this.txtsource);
this.controls.add(this.txtkeyprivate);
this.controls.add(this.txtkeypublic);
this.controls.add(this.btngethashdeformatter);
this.controls.add(this.btngethashsignature);
this.controls.add(this.btndeformatter);
this.controls.add(this.btnsignature);
this.controls.add(this.btnrsadecrypt);
this.controls.add(this.btnrsaencrypt);
this.controls.add(this.btnbuildkey);
this.name = "frmrsacryptiontest";
this.text = "rsa加密解密";
this.resumelayout(false);

}
#endregion

#region 应用程序的主入口点
/// <summary>
/// 应用程序的主入口点
/// </summary>
[stathread]
static void main()
{
application.run(new frmrsacryptiontest());
}
#endregion

#region 产生密钥

private void btnbuildkey_click(object sender, system.eventargs e)
{

try
{
rsacryption rc = new rsacryption();

rc.rsakey(out m_strkeyprivate, out m_strkeypublic);

this.txtkeyprivate.text = m_strkeyprivate;
this.txtkeypublic.text = m_strkeypublic;
}
catch(exception ex)
{
messagebox.show(this,ex.message,"错误",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.error);
}
}
#endregion

#region 加密解密

private void btnrsaencrypt_click(object sender, system.eventargs e)
{
try
{
rsacryption rc = new rsacryption();

this.txtrsaencrypt.text = rc.rsaencrypt(m_strkeypublic, this.txtsource.text);
}
catch(exception ex)
{
messagebox.show(this,ex.message,"错误",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.error);
}
}

private void btnrsadecrypt_click(object sender, system.eventargs e)
{
try
{
rsacryption rc = new rsacryption();

this.txtrsadecrypt.text = rc.rsadecrypt(m_strkeyprivate, this.txtrsaencrypt.text);
}
catch(exception ex)
{
messagebox.show(this,ex.message,"错误",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.error);
}
}

#endregion

#region 签名、验证

#region 获取hash码---针对签名

private void btngethashsignature_click(object sender, system.eventargs e)
{
try
{
rsacryption rc = new rsacryption();

if( rc.gethash(this.txtsource.text,ref m_strhashbytesignature) == false)
{
messagebox.show(this,"取hash码错误!","提示",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.warning);
}

this.txtgethashsignature.text = m_strhashbytesignature;
}
catch(exception ex)
{
messagebox.show(this,ex.message,"错误",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.error);
}
}
#endregion

#region 签名
private void btnsignature_click(object sender, system.eventargs e)
{
try
{
rsacryption rc = new rsacryption();

if( rc.signatureformatter(m_strkeyprivate,m_strhashbytesignature, ref m_strencryptedsignaturedata) == false)
{
messagebox.show(this,"rsa数字签名错误!","提示",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.warning);
}

this.txtsignature.text = m_strencryptedsignaturedata;
}
catch(exception ex)
{
messagebox.show(this,ex.message,"错误",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.error);
}
}
#endregion

#region 获取hash码---针对验证
private void btngethashdeformatter_click(object sender, system.eventargs e)
{
try
{
rsacryption rc = new rsacryption();

if( rc.gethash(this.txtsource.text,ref m_strhashbytedeformatter) == false)
{
messagebox.show(this,"取hash码错误!","提示",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.warning);
}

this.txtgethashdeformatter.text = m_strhashbytedeformatter;
}
catch(exception ex)
{
messagebox.show(this,ex.message,"错误",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.error);
}
}
#endregion

#region 验证
private void btndeformatter_click(object sender, system.eventargs e)
{
try
{
rsacryption rc = new rsacryption();

if( rc.signaturedeformatter(m_strkeypublic,m_strhashbytedeformatter, m_strencryptedsignaturedata) == false)
{
messagebox.show(this,"身份验证失败!","提示",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.warning);
}
else
{
messagebox.show(this,"身份验证通过!","提示",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.warning);
}
}
catch(exception ex)
{
messagebox.show(this,ex.message,"错误",system.windows.forms.messageboxbuttons.ok,system.windows.forms.messageboxicon.error);
}
}
#endregion

#endregion

}
}




文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·中文字符从jsp传送到servlet的处理-JSP教程,Jsp/Servlet
·带右键菜单的树形控件(1)-ASP教程,ASP应用
·RSA加密解密及RSA签名和验证-.NET教程,安全和优化
·VB中String的用法及原理-.NET教程,VB.Net语言
·ASP Forum2.0学习笔记之二---了解Master Pages库-ASP教程,数据库相关
·使用ImageList时候发生运行错误提示资源问题的解决方法-.NET教程,评论及其它
·web.config点滴:更改login控件对密码安全性的要求-.NET教程,组件控件开发
·基于h.323协议的ip视频会议质量技术
·框架(javascript)-JSP教程,Java技巧及代码
·讲一讲ASP处理数据用的组件ADO (ActiveX Data Object)-ASP教程,数据库相关
最新文章
·从两方面看ajax与b/s_ajax教程
·google adsense for content新的广告样式_google推广
·flash as代码简单实现动态文本包边效果_flash教程
·我做gg广告从0到每月1000美元详细全过程_网赚技巧
·google adsense 中文高价关键词一览_网赚技巧
·谁说小网站赚不到钱!_网赚技巧
·什么样的网站才算是高质量网站呢?_站长心得
·经验:搜索引擎的页面各个元素的权重比例参考_站长心得
·搜索引擎google排名优化全攻略_google推广
·月入千美金不是梦--adsense高收入实战及分_google推广
相关主题
  • RSA加密算法在VB中的实现-.NET教程,VB.Net语言
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭