2016-04-26 129 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。