簡體   English   中英

嘗試創建一個256位密鑰存儲在web.config中

[英]Trying to create a 256bit key to store in web.config

我試圖創建一個256位密鑰並將其用於AES加密,並且需要將其存儲在我的web.config文件中,因此必須將其轉換為字符串。

我正在使用的密碼庫是: https : //gist.githubusercontent.com/jbtule/4336842/raw/8da408b55fe9f94adb3319ed6491897d0ebac790/AESThenHMAC.cs

例如,方法簽名如下所示:

public static string SimpleEncrypt(string secretMessage, byte[] cryptKey, byte[] authKey,
                                           byte[] nonSecretPayload = null)

我嘗試了以下操作,但返回的是有趣的字符:

var hmac = new HMACSHA256();
var keyHex = System.Text.Encoding.UTF8.GetString(hmac.Key);

我將需要創建一個類似的秘密密鑰,因為它也是256位,所以將是相同的過程,並且我需要將其存儲在web.conf文件中。

希望有人可以幫助我

作為一般規則,當需要將任意二進制數據存儲為文本(例如,將字節數組作為文本存儲在屬性文件中)時,應使用二進制格式的更可移植的形式。

其中有很多,其用途取決於開發人員的偏好,預期用途,性能問題等。

如今,將二進制數據作為文本進行便攜式存儲的最常用格式是Base 64( https://en.wikipedia.org/wiki/Base64 )。 在將字節存儲到文本文件時,應將字節轉換為Base64字符串,在將其加載到代碼中時,應將其轉換回字節。

在C#中,要使用的實現取決於實際平台,並且您總是可以找到許多可以提供此實現的庫。 例如,在某些版本的.NET Framework中,您可以使用https://msdn.microsoft.com/zh-cn/library/dhx0d524(v=vs.110).aspxhttps://msdn.microsoft.com/ zh-CN / library / system.convert.frombase64string(v = vs.110).aspx

您向類詢問它用於實例化HMACSHA256的密鑰。 HMACSHA256的Key屬性顯示為:

獲取或設置要在哈希算法中使用的密鑰。 (繼承自HMAC。)

如果未指定密鑰,則.NET類將生成其自己的隨機密鑰。 但是,這是用作HMAC功能的輸入參數的鍵(可以使用任何大小的鍵), 而不是 HMAC的輸出(256位)。

如果要使用新生成的密鑰,則應使用RNGCryptoServiceProvider的實例來生成256位(32字節)的隨機密鑰。 然后,您可以在使用的AES類中將這些字節直接用作鍵值。

如果要將密鑰存儲為文本,則需要將其編碼為十六進制或以64為基數。如果直接將其作為文本查看,則將獲得隨機(“有趣”)字符,並且僅字節可以顯示為可打印字符時完全沒有

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM