首页 / 软件开发 / 数据结构与算法 / 非对称加密(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密钥对。