我正在尝试创建一个 256 位 key 并在 AES 加密中使用它,我需要将其存储在我的 web.config 文件中,因此必须将其转换为字符串。
例如,方法签名如下所示:
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);
我需要创建一个类似的 key ,这将是相同的过程,因为它也是 256 位的,我需要存储在 web.conf 文件中。
希望有人能帮助我
请您参考如下方法:
作为一般规则,当需要将任意二进制数据存储为文本时(例如,将字节数组作为文本存储在属性文件中),则应使用更便携的二进制数据形式。
其中有很多,使用取决于开发人员的偏好、预期用途、性能问题等。
当今最常用的二进制数据可移植存储格式是 Base 64 ( https://en.wikipedia.org/wiki/Base64 )。将字节存储到文本文件时应将字节转换为 Base64 字符串,并在将其加载到代码中时将其转换回字节。
在 C# 中,要使用的实现会因实际平台而异,而且您总能找到许多提供此实现的库。例如,在某些版本的 .NET 框架中,您可以使用 https://msdn.microsoft.com/en-us/library/dhx0d524(v=vs.110).aspx和 https://msdn.microsoft.com/en-us/library/system.convert.frombase64string(v=vs.110).aspx
