【发布时间】:2011-03-29 23:08:27
【问题描述】:
我正在使用 .NET 生成加密消息。作为此过程的一部分,我正在生成一个用于加密过程的盐值,并将其传输给加密消息的接收者,以便他们可以解密消息。我想将盐作为文本字符串传输,但是当我尝试将盐字节数组转换为字符串时,每个字节都用“破折号”分隔。例如..
45-A1-99-0C-C0-0C-C2-C2
这是生成盐的方法..
Public Shared Function GenerateSalt() As String
Dim rng As New RNGCryptoServiceProvider()
Dim buffer As Byte() = New Byte(7) {}
rng.GetBytes(buffer)
Return BitConverter.ToString(buffer)
End Function
我的问题是这样的。如何将盐表示为收件人可以在其解密过程中使用的字符串?
【问题讨论】:
-
收件人需要什么格式才能在解密过程中使用它?
-
我不能肯定地说,因为除了 AES 128 位之外,我不知道收件人将使用什么系统来解密。我想给他们一个盐值作为字符串。
-
它们应该能够处理几乎任何标准字符串:
BitConverter的输出应该没问题,尽管BitConverter.ToString(buffer).Replace("-","").ToLower()可能会更标准。 -
@LukeH - 如果我用空格替换破折号不会改变盐的值吗?当接收者将盐的字符串表示形式转换为字节数组时,它与我用于加密的输入不同。不过我可能是错的。
标签: .net encryption bytearray salt