AesCryptoServiceProvider 类


AesCryptoServiceProvider

命名空间:System.Security.Cryptography

程序集:System.Core.dll, netstandard.dll, System.Security.Cryptography.Csp.dll

使用高级加密标准 (AES) 算法的加密应用程序编程接口 (CAPI) 实现来执行对称加密解密

public sealed class AesCryptoServiceProvider : System.Security.Cryptography.Aes

继承Object → SymmetricAlgorithm → Aes → AesCryptoServiceProvider

示例

下面的示例演示如何使用 AesCryptoServiceProvider 类对示例数据进行加密和解密。

using System;
using System.IO;
using System.Security.Cryptography;

namespace Aes_Example
{
    class AesExample
    {
        public static void Main()
        {
            string original = "Here is some data to encrypt!";

            // 创建 AesCryptoServiceProvider 实例
            // 初始化一个新的密钥 
            // vector (IV).
            using (AesCryptoServiceProvider myAes = new AesCryptoServiceProvider())
            {
                // 将字符串加密为字节数组
                byte[] encrypted = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV);

                // 将字节解密为字符串
                string roundtrip = DecryptStringFromBytes_Aes(encrypted, myAes.Key, myAes.IV);

                //显示原始数据和解密数据
                Console.WriteLine("Original:   {0}", original);
                Console.WriteLine("Round Trip: {0}", roundtrip);
            }
        }
        static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV)
        {
            // 检查参数
            if (plainText == null || plainText.Length <= 0)
                throw new ArgumentNullException("plainText");
            if (Key == null || Key.Length <= 0)
                throw new ArgumentNullException("Key");
            if (IV == null || IV.Length <= 0)
                throw new ArgumentNullException("IV");
            byte[] encrypted;
            
            // 创建aescyptoserviceprovider对象
            // 使用指定的密钥和IV
            using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
            {
                aesAlg.Key = Key;
                aesAlg.IV = IV;

                // 创建加密程序以执行流转换
                ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

                // 创建用于加密的
                using (MemoryStream msEncrypt = new MemoryStream())
                {
                    using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                    {
                        using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                        {
                            //将所有数据写入流
                            swEncrypt.Write(plainText);
                        }
                        encrypted = msEncrypt.ToArray();
                    }
                }
            }

            // 从内存流返回加密字节
            return encrypted;

        }

        static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key, byte[] IV)
        {
            // 检查参数
            if (cipherText == null || cipherText.Length <= 0)
                throw new ArgumentNullException("cipherText");
            if (Key == null || Key.Length <= 0)
                throw new ArgumentNullException("Key");
            if (IV == null || IV.Length <= 0)
                throw new ArgumentNullException("IV");

            // 声明用于保存的字符串
            // 解密的文本
            string plaintext = null;

            // 创建aescyptoserviceprovider对象
            // 使用指定的密钥和IV
            using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
            {
                aesAlg.Key = Key;
                aesAlg.IV = IV;

                // 创建解密程序以执行流转换
                ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

                // 创建用于解密的流
                using (MemoryStream msDecrypt = new MemoryStream(cipherText))
                {
                    using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
                    {
                        using (StreamReader srDecrypt = new StreamReader(csDecrypt))
                        {

                            // 从解密流中读取解密字节 并把它们串起来
                            plaintext = srDecrypt.ReadToEnd();
                        }
                    }
                }

            }

            return plaintext;

        }
    }
}

构造函数

AesCryptoServiceProvider():初始化 AesCryptoServiceProvider 类的新实例。

字段

BlockSizeValue:表示加密操作的块大小(以位为单位)。(继承自 SymmetricAlgorithm)

FeedbackSizeValue:表示加密操作的反馈大小(以位为单位)。(继承自 SymmetricAlgorithm)

IVValue:表示对称算法的初始化向量 (IV)。(继承自 SymmetricAlgorithm)

KeySizeValue:表示对称算法使用的密钥的大小(以位为单位)。(继承自 SymmetricAlgorithm)

KeyValue:表示对称算法的密钥。(继承自 SymmetricAlgorithm)

LegalBlockSizesValue:指定对称算法支持的块大小(以位为单位)。(继承自 SymmetricAlgorithm)

LegalKeySizesValue:指定对称算法支持的密钥大小(以位为单位)。(继承自 SymmetricAlgorithm)

ModeValue:表示对称算法中使用的密码模式。(继承自 SymmetricAlgorithm)

PaddingValue:表示对称算法中使用的填充模式。(继承自 SymmetricAlgorithm)

属性

Key:获取或设置用于加密和解密的对称密钥。

KeySize:获取或设置密钥的大小(以位为单位)。

方法

Clear():释放 SymmetricAlgorithm 类使用的所有资源。(继承自 SymmetricAlgorithm)

CreateDecryptor():使用当前的密钥和初始化向量 (IV) 创建对称 AES 解密器对象。

CreateDecryptor(Byte[], Byte[]):使用指定的密钥和初始化向量 (IV) 创建对称 AES 解密器对象。

CreateEncryptor():使用当前的密钥和初始化向量 (IV) 创建对称 AES 加密器对象。

CreateEncryptor(Byte[], Byte[]):使用指定的密钥和初始化向量 (IV) 创建对称加密器对象。

Dispose():释放 SymmetricAlgorithm 类的当前实例所使用的所有资源。(继承自 SymmetricAlgorithm)

Dispose(Boolean):释放由 SymmetricAlgorithm 占用的非托管资源,还可以另外再释放托管资源。(继承自 SymmetricAlgorithm)

Equals(Object):确定指定的对象是否等于当前对象。(继承自 Object)

GenerateIV():生成用于该算法的随机初始化向量 (IV)。

GenerateKey():生成用于该算法的随机密钥。

GetHashCode():用作默认哈希函数。(继承自 Object)

GetType():获取当前实例的 Type。(继承自 Object)

MemberwiseClone():创建当前 Object 的浅表副本。(继承自 Object)

ToString():返回一个表示当前对象的 string。(继承自 Object)

ValidKeySize(Int32):确定指定的密钥大小对当前算法是否有效。(继承自 SymmetricAlgorithm)

相关阅读 >>

AesCryptoServiceProvider

更多相关阅读请进入《AesCryptoServiceProvider》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...