2016-04-26 165 views
0

我试图在文件中以纯文本格式保存AES256密钥。当我直接写入字节,并在记事本中打开文件时,我看到一堆垃圾。我试图用UTF编码字节,但也许我做错了什么。C#AES密钥文件

下面是代码:

public static bool GenerateAes256KeyFile() 
{    
    SymmetricAlgorithm aesAlg = new AesCryptoServiceProvider(); 
    aesAlg.GenerateKey(); 

    //System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding(); 
    //string key = encoder.GetString(aesAlg.Key); 
    //File.WriteAllText(keyFile, aesAlg.Key); 
    File.WriteAllBytes(keyFile, aesAlg.Key); 
    return true; 
} 

我曾尝试在评论编码的欢迎,并得到不同样的垃圾文字。

我可能只是缺少一些简单的东西,因为我是C#的新手。任何援助非常感谢。

谢谢

+1

一个键是一系列随机字节,如果放在文件中就会看起来像垃圾一样。试图将一串随机字节解码为UTF-8也没有意义,并可能导致错误。 *你想要将它转换成什么样的纯文本? –

+0

关键**是**随机垃圾。将其转换为utf-8会随机破坏密钥,因为其中一些随机字节可以映射到实际的utf8字符。你不想要utf,你想要的东西像base64 –

+0

你可以使用'Convert.ToBase64String'(读取:'Convert.FromBase64String') – Eser

回答

0

谢谢Marc和Eser。解决方案是使用Convert.ToBase64String。