117.info
人生若只如初见

C# byte数组加密与解密方法

在C#中,可以使用加密算法来加密和解密byte数组。以下是一个示例代码,演示如何使用AES算法对byte数组进行加密和解密。

using System;
using System.Security.Cryptography;
using System.Text;

class Program
{
    static void Main()
    {
        string plaintext = "Hello, world!";
        byte[] plainBytes = Encoding.UTF8.GetBytes(plaintext);

        byte[] key = Encoding.UTF8.GetBytes("0123456789abcdef");
        byte[] iv = Encoding.UTF8.GetBytes("fedcba9876543210");

        byte[] encryptedBytes = Encrypt(plainBytes, key, iv);
        Console.WriteLine("Encrypted: " + BitConverter.ToString(encryptedBytes).Replace("-", ""));

        byte[] decryptedBytes = Decrypt(encryptedBytes, key, iv);
        string decryptedText = Encoding.UTF8.GetString(decryptedBytes);
        Console.WriteLine("Decrypted: " + decryptedText);
    }

    static byte[] Encrypt(byte[] plainBytes, byte[] key, byte[] iv)
    {
        using (Aes aes = Aes.Create())
        {
            aes.Key = key;
            aes.IV = iv;

            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(plainBytes, 0, plainBytes.Length);
                    cs.FlushFinalBlock();
                    return ms.ToArray();
                }
            }
        }
    }

    static byte[] Decrypt(byte[] encryptedBytes, byte[] key, byte[] iv)
    {
        using (Aes aes = Aes.Create())
        {
            aes.Key = key;
            aes.IV = iv;

            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, aes.CreateDecryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(encryptedBytes, 0, encryptedBytes.Length);
                    cs.FlushFinalBlock();
                    return ms.ToArray();
                }
            }
        }
    }
}

在上面的示例中,我们使用AES算法对字符串"Hello, world!"进行加密和解密。首先将明文字符串转换为byte数组,然后使用Encrypt方法对其进行加密,再使用Decrypt方法对加密后的数据进行解密。最后我们将解密后的byte数组转换为字符串输出。

未经允许不得转载 » 本文链接:https://www.117.info/ask/feb20AzsIAw5eA1w.html

推荐文章

  • C++ next_permutation与prev_permutation

    next_permutation和prev_permutation是C++标准库中的两个函数,用于在给定的序列中生成下一个排列和上一个排列。
    next_permutation函数可以生成给定序列的下...

  • C++ next_permutation的效率如何

    C++的next_permutation函数是标准库中用来生成给定序列的下一个排列的函数,其效率取决于输入序列的大小和特性。在最坏情况下,生成下一个排列需要O(n)的时间复杂...

  • C++ next_permutation函数怎么用

    在C++中,可以使用next_permutation函数来生成下一个排列。该函数位于头文件中,并接受两个迭代器作为参数:起始迭代器和结束迭代器。
    下面是一个简单的示例...

  • C++ next_permutation的时间复杂度

    C++中的next_permutation函数的时间复杂度为O(n),其中n为序列的长度。这是因为next_permutation函数的实现使用了一种高效的算法来生成下一个排列,时间复杂度主...

  • C#如何有效遍历byte数组

    在C#中,可以使用foreach循环来遍历byte数组。以下是一个示例代码:
    byte[] byteArray = { 1, 2, 3, 4, 5 }; foreach (byte b in byteArray)
    { Consol...

  • C#中处理大量byte数据的策略

    在C#中处理大量byte数据时,可以考虑以下策略: 使用内存映射文件:通过将数据文件映射到内存中,可以避免频繁的IO操作,提高数据读取和处理的效率。 使用流操作...

  • C# byte数组能作为哈希键吗

    在C#中,byte数组可以作为哈希键,只要符合哈希键的要求。哈希键必须是不可变的,并且需要实现GetHashCode()和Equals()方法。在使用byte数组作为哈希键时,可以自...

  • C#中byte数组的内存效率分析

    在C#中,byte数组的内存占用效率是相对较高的,因为每个byte占用一个字节的内存空间。这意味着如果数组很大,占用的内存空间也会很大。
    另外,C#中的数组是...