Welcome

首页 / 软件开发 / 数据结构与算法 / 非对称加密(3).NET 非对称加密体系

非对称加密(3).NET 非对称加密体系2014-04-24与对称加密算法相同,所有的非对称算法的相关类也存在于System.Security.Cryptography命名空间中。在该命名空间中,.NET框架提供了RSA、DSA、ECC、Differ-Hellman共四种非对称加密算法的实现。本节介绍其中几种主要的相关类和接口。具体应用的相关内容将在下一节进行介绍。

AsymmetricAlgorithm类

AsymmetricAlgorithm抽象类是所有非对称加密算法相关类的基类。该类的主要成员如下:

1) AsymmetricAlgorithm()函数。该函数是AsymmetricAlgorithm类的构造函数。

2) static Create()函数。创建非对称加密算法的执行对象。

3) static AsymmetricAlgorithm Create(string algName)函数。创建指定名称的非对称加密算法的执行对像。

4) abstract void FromXmlString(string xmlString)函数。在派生类中重写时,从XML字符串重新构造AsymmetricAlgorithm对象。

5) int KeySizeValue字段。表示不对称算法所用密钥模块的大小(单位:位)。

6) KeySizes[] LegalKeySizesValue字段。指定不对称算法支持的密钥大小。不对称算法仅支持与该数组中的条目匹配的密钥大小。

7) abstract string KeyExchangeAlgorithm { get; }属性。当在派生类中重写时,获取密钥交换算法的名称。

8) virtual int KeySize { get; set; }属性。获取或设置不对称算法所用密钥模块的大小(单位:位)。

9) virtual KeySizes[] LegalKeySizes { get; }属性。获取不对称算法支持的密钥大小。不对称算法仅支持与该数组中的条目匹配的密钥大小。

10) abstract string SignatureAlgorithm { get; }属性。获取签名算法的名称。

RSA 类

RSA类是所有RSA算法实现类的基类,继承自AsymmetricAlgorithm类。RSA类的主要成员如下(继承自AsymmetricAlgorithm类的成员不再重复):

1) abstract byte[] DecryptValue(byte[] rgb)方法。在派生类中重写时,使用私钥解密输入数据。参数rgb是要解密的密码文本。

2) abstract RSAParameters ExportParameters(bool includePrivateParameters)方法。在派生类中重写时,导出RSAParameters实例。参数includePrivateParameters为true时表示要包括私有参数,否则为false。

3) abstract void ImportParameters(RSAParameters parameters)方法。在派生类中重写时,导入指定的RSAParameters实例。

RSACryptoServiceProvider类

RSACryptoServiceProvider类是RSA类的默认实现,继承了ICspAsymmetricAlgorithm接口。该类中非继承成员如下:

1) RSACryptoServiceProvider()构造函数。使用默认密钥初始化 RSACryptoServiceProvider 类的新实例。如果没有找到默认密钥,则创建一个新密钥。此构造函数创建一个Exchange密钥对,用于加密会话密钥以使它们可以安全存储并与其他用户交换。生成的密钥对应于在非托管 Microsoft Cryptographic API (CAPI) 中使用的以 AT_KEYEXCHANGE 值生成的密钥。

2) RSACryptoServiceProvider(int dwKeySize)构造函数。使用指定的密钥大小初始化 RSACryptoServiceProvider类的新实例。

3) RSACryptoServiceProvider(CspParameters parameters)构造函数。使用指定的参数初始化RSACryptoServiceProvider类的新实例。此构造函数创建或重用使用parameters参数的 KeyContainerName 字段指定的密钥容器。在默认情况下,此构造函数创建一个Exchange 密钥对,用于加密会话密钥以使它们可以安全存储并与其他用户交换。生成的密钥对应于在非托管Microsoft Cryptographic API (CAPI)中使用的以AT_KEYEXCHANGE值生成的密钥。   你可以创建一个Signature密钥对,用于通过将parameters参数的KeyNumber字段设置为Signature值来对消息或文件进行身份验证(数字签名)。此类型的密钥对应于 CAPI 中使用的AT_SIGNATURE值。如果使用指定的Exchange值创建一个 RSACryptoServiceProvider 对象,然后用指定的Signature值创建另一个 RSACryptoServiceProvider 对象,如果两个对象都指定相同的密钥容器名称,两个密钥将放置在一个容器中。若要创建与使用RSACryptoServiceProvider类的强名称签名兼容的密钥,必须创建一个Signature密钥对。