IT资讯
当前位置:蛋蛋网 > IT资讯 >  科技人物

AesCryptoServiceProvider 类

2020-01-28 00:47:44 木庄网络博客 编辑:蛋蛋 浏览数:40蛋蛋网

AesCryptoServiceProvider 类 命名空间:System.Security.Cryptography 程序集:System.Core.dll, netstandard.dll, ...

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)

分享到:

版权与免责声明:

凡未注明"稿件来源"的内容均为转载稿,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;


本文地址:http://www.tomiran.com/news/2020/01/28/681299125.html

转载本站原创文章请注明来源:蛋蛋网

行业聚焦

QQ音乐发布2019年度听歌报告:看看哪些音乐/歌手独得你“恩宠”

IT之家12月30日消息 继上午网易云音乐上线2019音乐总结功能后,QQ音乐也紧随其后上线年度总结功能。IT之家编辑实测用户可通过微信扫码的方式查看自己201...[详细]

机械革命推出钛钽笔记本:17.3英寸240Hz,A面无logo设计

IT之家12月19日消息 近日,机械革命推出了新款的机械革命钛钽笔记本,17.3英寸大屏,240Hz刷新率,i7+RTX 2060版本售价13999元。配置方面...[详细]

三个“没有”,微软Windows 7全屏警告中文弹窗开始大规模上线

IT之家1月15日消息 2020年1月14日,Windows 7系统生命周期终止,操作系统将不再收到任何其他安全补丁。Windows 7 KB4534310显然...[详细]

苹果iPad发布十周年:销量超3.5亿部,未来会向笔记本转型吗?

十年前的今天,也就是2010年1月28日(美国当地时间1月27日),史蒂夫·乔布斯(Steve Jobs)向全世界发布了平板电脑:iPad。乔布斯发布iPad按...[详细]

谷歌发布2020年I/O开发者大会时刻5月12日老地方见

.tech-quotation{padding:20px 20px 0px;background:url(//n.sinaimg.cn/tech/content...[详细]

活动互动

更多

继微软后 美光科技也宣布获得向华为合作许可证

 

DoNews 12月23日消息(记者 赵晋杰)据路透社消息,美国芯片制造商美光科技12月18日表示,其已收到对华为继续供...[详细]

OPPO ColorOS系统8套免费全局主题上线:王者荣耀 铠...

 

OPPO ColorOS系统官方宣布,大家期待已久的全局主题已经上线啦!全局主题覆盖的手机使用场景较多,包括了锁屏、壁纸...[详细]

戴上飞利浦降噪耳机,随途牛一起春节出游

 

吉时团圆、快乐”静“行。1月10日,人类一年一度最大的迁徙活动——春运将正式开始。随着观念改变,春节期间,越来越多的人不...[详细]

为什么用了索引之后查询就会变快?

 

都知道索引有助于快速检索,但为什么用了索引之后,查询就会变快?最常见的索引是 B+ Tree 索引,索引可以加快数据库的...[详细]

“基因编辑婴儿”案一审宣判,贺建奎被判三年有期徒刑

 

IT之家12月30日消息 据央视新闻报道,“基因编辑婴儿”案30日在深圳市南山区人民法院一审公开宣判。贺建奎、张仁礼、覃...[详细]

一周排行每月关注
安徽11选5 传奇私服 广西快3 安徽11选5