Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用AesCng生成AES加密密钥_C#_Encryption_Aes_Aescng - Fatal编程技术网

C# 使用AesCng生成AES加密密钥

C# 使用AesCng生成AES加密密钥,c#,encryption,aes,aescng,C#,Encryption,Aes,Aescng,我正在使用AesCng生成加密密钥,代码如下: using System; using System.Security.Cryptography; using System.Text; namespace EncryptionTest { class Program { static void Main(string[] args) { Console.WriteLine(Encoding.UTF8.GetString(G

我正在使用AesCng生成加密密钥,代码如下:

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

namespace EncryptionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Encoding.UTF8.GetString(GenerateKey()));
        }

        static byte[] GenerateKey()
        {
            using (AesCng cng = new AesCng())
            {
                cng.GenerateKey();
                return cng.Key;
            }
        }
    }
}
当我在控制台中检查钥匙时,它显示为r?▬?^?-?▲?ZQ^???♥$??8w?f▬?[


看起来有些字符没有得到解析。有人能帮我理解我做错了什么吗?

AES密钥只是一系列字节。这些字节不保证是可打印字符,无论是UTF8、ASCII还是任何其他字符编码。这是正常的,生成的密钥没有问题

通常,如果要将一系列任意字节转换为可打印字符串,可以对其使用Base-64编码,如下所示:

Console.WriteLine(Convert.ToBase64String(GenerateKey()));
VX/oYK1P5LQAH5MqiRHyNDtZyNcQGEUpIRpnpsY+buk=
这将为您提供如下输出:

Console.WriteLine(Convert.ToBase64String(GenerateKey()));
VX/oYK1P5LQAH5MqiRHyNDtZyNcQGEUpIRpnpsY+buk=
小提琴:


有关更多信息和示例,请参阅和。

AES密钥只是一系列字节。这些字节不保证是可打印字符,无论是UTF8、ASCII还是任何其他字符编码。这是正常的,生成的密钥没有问题

通常,如果要将一系列任意字节转换为可打印字符串,可以对其使用Base-64编码,如下所示:

Console.WriteLine(Convert.ToBase64String(GenerateKey()));
VX/oYK1P5LQAH5MqiRHyNDtZyNcQGEUpIRpnpsY+buk=
这将为您提供如下输出:

Console.WriteLine(Convert.ToBase64String(GenerateKey()));
VX/oYK1P5LQAH5MqiRHyNDtZyNcQGEUpIRpnpsY+buk=
小提琴:


有关更多信息和示例,请参见和。

回答OP的问题:您没有做错任何事情。您看到的键很好。回答OP的问题:您没有做错任何事情。您看到的键很好。您有一个字节[]您似乎想要打印字符串表示形式。我想您应该使用Convert.ToBase64StringGenerateKey您有一个字节[],并且您似乎想要打印字符串表示形式。我想您应该使用Convert.ToBase64StringGenerateKey