繁体   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