.NET_RSA加密全接触(重、难点解析)
.NET Framework提供了两个类供我们使用RSA算法,分别是:用于加密数据的RSACryptoServiceProvider和用于数字签名的DSACryptoServiceProvider,本文主要谈论RSACryptoServiceProvider的使用以及微软实现RSA算法时的一些主要特点。
1、.NET中RSA密钥格式
RSA的密钥有两种表现形式,一种是通过RSAParameters对象来表现,另一种是通过XML字符串来表现,当通过默认构造函数构造一个RSACryptoServiceProvider实例的时候,会自动生成一对公私钥,可以通过调用其ExportParameters()方法或ToXmlString()方法导出密钥(分别对应前面所述的两种表现形式)。这两种表现形式的本质是一样的,前者是一个含有八个字段的结构体,后者是一个含有八个XML配置节的XMLNODE,这八个元素的名称分别为:
D、DP、DQ、Exponent、InverseQ、Modulus、Q
要了解这些元素的意义,首先需要了解构造公私钥的过程
A) 找到两个大素数P和q,相乘得n
B) 选择一个数e,它小于n且与n互素,得到公钥(e,n)
C) 得到一个数