C# 使用AesCng生成AES加密密钥
我正在使用AesCng生成加密密钥,代码如下: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
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