国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

我們一起聊聊 C# AES 加密與解密

開發 前端
AES(Advanced Encryption Standard)是一種對稱加密算法,廣泛用于數據的加密和解密。在C#中,我們可以使用AesManaged類來實現AES加密和解密。

常用屬性與方法

AesManaged類提供了許多屬性和方法,以下是一些常用的:

  • Key:獲取或設置加密算法的密鑰。
  • IV:獲取或設置加密算法的初始化向量。
  • BlockSize:獲取加密算法的塊大?。ㄒ晕粸閱挝唬?。
  • KeySize:獲取或設置加密算法的密鑰大小(以位為單位)。
  • Padding:獲取或設置加密算法的填充模式。
  • CreateEncryptor():創建用于加密數據的ICryptoTransform對象。
  • CreateDecryptor():創建用于解密數據的ICryptoTransform對象。

基本用法

以下是一個簡單的示例代碼,演示了如何使用AES加密和解密數據:

static void Main()
{
    // 原始文本
    string plainText = "Hello, world!";


    // 生成隨機的密鑰和初始化向量
    byte[] key = GenerateRandomKey();
    byte[] iv = GenerateRandomIV();


    // 加密數據
    byte[] encryptedData = Encrypt(Encoding.UTF8.GetBytes(plainText), key, iv);


    // 解密數據
    string decryptedText = Decrypt(encryptedData, key, iv);


    // 輸出結果
    Console.WriteLine("Original Text: " + plainText);
    Console.WriteLine("Encrypted Data: " + Convert.ToBase64String(encryptedData));
    Console.WriteLine("Decrypted Text: " + decryptedText);
}


// 生成隨機的密鑰
static byte[] GenerateRandomKey()
{
    using (AesManaged aes = new AesManaged())
    {
        aes.GenerateKey();
        return aes.Key;
    }
}


// 生成隨機的初始化向量
static byte[] GenerateRandomIV()
{
    using (AesManaged aes = new AesManaged())
    {
        aes.GenerateIV();
        return aes.IV;
    }
}


// 使用指定的密鑰和初始化向量加密數據
static byte[] Encrypt(byte[] data, byte[] key, byte[] iv)
{
    using (AesManaged aes = new AesManaged())
    {
        aes.Key = key;
        aes.IV = iv;


        using (MemoryStream memoryStream = new MemoryStream())
        {
            using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(), CryptoStreamMode.Write))
            {
                cryptoStream.Write(data, 0, data.Length);
                cryptoStream.FlushFinalBlock();
                return memoryStream.ToArray();
            }
        }
    }
}


// 使用指定的密鑰和初始化向量解密數據
static string Decrypt(byte[] data, byte[] key, byte[] iv)
{
    using (AesManaged aes = new AesManaged())
    {
        aes.Key = key;
        aes.IV = iv;


        using (MemoryStream memoryStream = new MemoryStream(data))
        {
            using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Read))
            {
                byte[] decryptedData = new byte[data.Length];
                int bytesRead = cryptoStream.Read(decryptedData, 0, decryptedData.Length);
                return Encoding.UTF8.GetString(decryptedData, 0, bytesRead);
            }
        }
    }
}

圖片圖片

AES通用類

public class AesHelper
{
    private byte[] key;
    private byte[] iv;


    public AesHelper(byte[] key, byte[] iv)
    {
        this.key = key;
        this.iv = iv;
    }


    public byte[] Encrypt(byte[] data)
    {
        using (AesManaged aes = new AesManaged())
        {
            aes.Key = key;
            aes.IV = iv;


            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(data, 0, data.Length);
                    cryptoStream.FlushFinalBlock();
                    return memoryStream.ToArray();
                }
            }
        }
    }


    public byte[] Decrypt(byte[] data)
    {
        using (AesManaged aes = new AesManaged())
        {
            aes.Key = key;
            aes.IV = iv;


            using (MemoryStream memoryStream = new MemoryStream(data))
            {
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, aes.CreateDecryptor(), CryptoStreamMode.Read))
                {
                    byte[] decryptedData = new byte[data.Length];
                    int bytesRead = cryptoStream.Read(decryptedData, 0, decryptedData.Length);
                    return decryptedData[..bytesRead];
                }
            }
        }
    }
}






static void Main()
{
    byte[] key = Encoding.UTF8.GetBytes("MySecretKey12345");
    byte[] iv = Encoding.UTF8.GetBytes("1234567890ABCDEF");


    AesHelper aesHelper = new AesHelper(key, iv);


    string plainText = "Hello, world!";
    byte[] encryptedData = aesHelper.Encrypt(Encoding.UTF8.GetBytes(plainText));
    byte[] decryptedData = aesHelper.Decrypt(encryptedData);
    string decryptedText = Encoding.UTF8.GetString(decryptedData);


    Console.WriteLine("Original Text: " + plainText);
    Console.WriteLine("Encrypted Data: " + Convert.ToBase64String(encryptedData));
    Console.WriteLine("Decrypted Text: " + decryptedText);
}

注意:iv長度

System.Security.Cryptography.CryptographicException: 'Specified initialization vector (IV) does not match the block size for this algorithm.'

這個異常通常是因為指定的初始化向量(IV)的長度與所使用的算法的塊大小不匹配導致的。AES算法的塊大小為128位(16字節),因此初始化向量的長度應為16字節。

圖片圖片

總結

使用C#中的AesManaged類,我們可以輕松地實現AES加密和解密。本文介紹了基本的用法,包括生成隨機密鑰和IV、加密和解密數據等操作。此外,還介紹了一些常用的屬性和方法,以便更好地理解和使用AesManaged類。根據實際需求和場景,我們可以靈活地使用這些功能來保護敏感數據的安全性。

責任編輯:武曉燕 來源: 技術老小子
相關推薦

2024-11-28 09:57:50

C#事件發布器

2023-10-10 08:00:07

2025-02-13 09:32:12

C#重寫override

2024-09-09 08:53:56

2024-08-30 11:00:22

2022-04-06 08:23:57

指針函數代碼

2025-01-09 07:54:03

2023-06-28 07:56:46

2024-12-23 10:20:50

2023-08-04 08:20:56

DockerfileDocker工具

2023-08-10 08:28:46

網絡編程通信

2022-05-24 08:21:16

數據安全API

2023-06-30 08:18:51

敏捷開發模式

2023-09-10 21:42:31

2024-02-26 00:00:00

架構老化重構

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-12-06 08:26:19

Service數據庫

2024-05-29 13:18:12

線程Thread?方式

2024-01-29 09:01:20

React列表模式
點贊
收藏

51CTO技術棧公眾號

欧美wwwww| 亚洲一区美女| 乱熟女高潮一区二区在线| 视频在线91| 国产真实久久| 欧美精品欧美精品系列| 欧美一区二区三区……| 日本福利视频在线| 国产精品tv| 婷婷亚洲久悠悠色悠在线播放| 成人夜晚看av| 97超碰在线公开在线看免费| 国产精品免费av| 青少年xxxxx性开放hg| 国产欧美日本| 日韩视频免费看| 中文字幕一区二区三区域| 国产精品国产成人国产三级| 在线电影欧美成精品| 精品蜜桃一区二区三区| 黑人玩欧美人三根一起进| 91欧美日韩| 国产精品成人免费| 日韩美女av在线免费观看| 在线观看午夜看亚太视频| 亚洲女子a中天字幕| 国内精品一区二区三区四区| 免费黄网站在线观看| 日韩vs国产vs欧美| 亚洲精品一区二区三区av| 国产精品白丝久久av网站| 亚洲精品久久在线| va天堂va亚洲va影视| 97久久天天综合色天天综合色hd| 国产白丝精品91爽爽久久| 中文字幕无线精品亚洲乱码一区 | 91精品婷婷国产综合久久性色| aiai久久| 欧美hdsex| 国产精品99久久久久久人 | wwwxxx黄色片| 久久精品欧美日韩精品| 黄色一级二级三级| 91久久香蕉国产日韩欧美9色| 欧美xxxx性| 久久99精品久久久久子伦| 亚洲一级一区| 李宗瑞系列合集久久| 亚洲精品按摩视频| 日韩av片子| 在线看黄网站| 国产狼人综合免费视频| 国产精品久久久久久亚洲毛片| 超碰这里只有精品| 日本中文字幕一级片| 亚洲欧美国产精品专区久久 | 国产美女在线精品免费观看| 一区二区三区欧美日韩| 欧美91在线| 在线看你懂得| 国产美女精品在线观看| 欧美精品丝袜久久久中文字幕| 黄色成人精品网站| 天堂中文8资源在线8| 国产欧美一区二区视频| 欧美视频一区二区三区四区| 免费视频久久| 神马久久午夜| 91香蕉视频网址| 日韩在线国产精品| 国产精品热久久久久夜色精品三区| 欧美在线一级| 国产农村av| 国产日韩亚洲精品| 精品少妇一区二区| 成人午夜精品一区二区三区| 亚洲91网站| 欧美日本高清| 亚洲熟妇无码另类久久久| 欧美专区中文字幕| 5566中文字幕一区二区电影| 国产91精品一区二区麻豆网站| 欧美一区二区三| 久草在线新免费首页资源站| 欧美三级一级片| 91精品免费视频| 国产亚洲精品va在线观看| 亚洲精品免费一二三区| 久久久久国产精品午夜一区| 久久精品九色| av免费在线免费| 欧美精品一区二区三区涩爱蜜| 亚洲乱码一区二区三区| 国产精品每日更新在线播放网址 | 日韩有码在线观看| 欧美在线免费观看亚洲| 久久亚洲二区三区| 国产毛片av在线| 97蝌蚪自拍自窝| 日韩在线导航| 成人激情视频在线播放| 欧美成人剧情片在线观看| 欧美成人激情免费网| 亚洲综合一区在线| 日本一区二区免费在线| 麻豆成人久久精品二区三区红| 亚洲先锋影音| 少妇久久久久| 深夜福利一区二区三区| 麻豆免费在线| av电影免费在线观看| 黄色在线论坛| 夜级特黄日本大片_在线| 91制片厂毛片| 北条麻妃在线视频观看| 中文字幕在线中文| 日韩欧美视频一区二区三区四区 | 亚洲黄页一区| 激情成人亚洲| 在线看片一区| 9色精品在线| 欧美日韩一视频区二区| 99国产精品免费视频观看| 国产欧美日韩免费观看| 好吊妞视频这里有精品| 国产精品流白浆在线观看| 深爱激情久久| 四虎成人av| 精品成人在线| 欧美aaa在线| 91论坛在线播放| 国产精品美女www爽爽爽| 一区二区三区久久久| 福利一区福利二区微拍刺激| 91福利在线观看| 91精品国产入口在线| 欧美mv和日韩mv的网站| 国产午夜精品全部视频在线播放| 精品一区二区三区电影| 欧美激情一级欧美精品| 成人免费自拍视频| 久久riav| 亚洲人成无码网站久久99热国产| 国产美女特级嫩嫩嫩bbb片| av网站在线不卡| 日本美女在线中文版| www.成人在线.com| 国产在线不卡| av不卡免费在线观看| 午夜久久久久久久久久一区二区| 韩国av一区| 99国产精品国产精品毛片| 精品久久久久久久中文字幕| 一区二区三区视频在线| 国产91色在线|免| 亚洲成人自拍| 在线视频2区| 欧美三级网址| 久久中文字幕av| 国产欧美一区二区精品仙草咪| 欧美一区二区三区喷汁尤物| 欧美成人四级hd版| 麻豆精品蜜桃一区二区三区| 成人免费淫片免费观看| 男插女视频久久久| 欧美激情视频一区二区三区在线播放 | 亚洲三级黄色在线观看| 国产一区红桃视频| 精品久久久噜噜噜噜久久图片| 超碰免费在线播放| 日本久久一二三四| 久久九九久久九九| 一本色道久久88亚洲综合88| 九九99久久| av电影在线播放高清免费观看| 久久香蕉网站| 97精品久久久午夜一区二区三区| 亚洲福利视频免费观看| 国产精品国产亚洲精品看不卡15| 中文字幕2018| 久久不见久久见中文字幕免费| 99精品久久只有精品| 亚洲欧美国产日韩天堂区| 欧美另类一区| 欧美性videos| 国产精品扒开腿做爽爽爽软件| 亚洲色图制服丝袜| 97精品伊人久久久大香线蕉| 成人小视频在线看| 欧美影院精品| 亚洲国产成人午夜在线一区| 久久免费在线观看| 狠狠色一日本高清视频| 精品国产一区二区三区噜噜噜 | 国产欧美日韩综合精品二区| 久久免费一级片| 91淫黄看大片| 91久久高清国语自产拍| 尤物yw午夜国产精品视频明星| 亚洲嫩模一区|