源码下载:http://download.csdn.net/source/2535155
.NET 签名和加密
概述:
在软件安全领域,经常要用到数字签名和加密功能,在.NET 中提供了比较方便的库来实现这两个功能。
数字签名主要实现了:
1)信息的完整性保护,即信息本身或签名的任何改变,都能在接收方识别出来;
2)信息发送者的身份认证,即可以证明信息是从签名的发送者发出的,具有不可抵赖性。
加密则实现了信息的加密传输。
Microsoft .NET 的签名和加密功能,都在System.Security.Cryptography中,详细可以查看:http://msdn.microsoft.com/en-us/library/92f9ye3s.aspx
数字签名一般采用非对称加密算法,用发送方私钥加密进行签名,接收方用发送方公钥解密进行校验(和加密过程刚好相反,用非对称算法加密时,加密方用接收方的公钥加密,接收方用自己的私钥解密)。在本文中,我们采用最常用的RSA算法。
加密一般采用对称加密算法(非对称加密一般性能较差,对被加密文本有长度限制,所以比较长的文本需要拆分逐段加密),本文采用3DES加密。
软件总体架构如下:
程序源码不再解释,说一下测试的情况:
1)正常测试
先用“Generate New Keys”生成RSA算法的Public/Private Key,同时生成3DES加密算法的Key/Iv,这些参数被保存在四个文本文件中,便于以后读取;
再在Tab页“Sign”的“Original Message”中输入待处理的文本,然后依次点击“1.Sign”“2.Combine”“3.Crypt”,完成对文本的签名的加密,其中签名附在原始文本明文的后面;
再点击“Verify”进行签名的验证,此时必然是成功的。
2)模拟Cracker破解了3DES加密算法后,修改原始文本
随意修改“Original Message”内容;
不要点击“1.Sign”,只依次点击“2.Combine”“3.Crypt”;
再点击“Verify”进行签名的验证,此时必会提示验证失败。
3)模拟Cracker破解了3DES加密算法后,修改原始签名
随意修改“Sign”内容;
不要点击“1.Sign”,只依次点击“2.Combine”“3.Crypt”;
再点击“Verify”进行签名的验证,此时必会提示验证失败。