我希望使用一种方法来保存需要使用字节数组的密码,如本文所述
那么我应该在sql server中使用哪种数据类型来保存字节数组?以及如何使用 SqlCommand 传递和检索字节数组?
我希望使用一种方法来保存需要使用字节数组的密码,如本文所述
那么我应该在sql server中使用哪种数据类型来保存字节数组?以及如何使用 SqlCommand 传递和检索字节数组?
如果它总是相同的长度,那么binary(length)
将是合适的。如果它的长度会有所不同,请使用varbinary(maxlength)
.
而且,正如@pswg 所说,您可以通过将其放入合适的参数中来从代码中传递它。
只需使用byte[]
与任何其他参数相同的方式,指定SqlDbType.Binary
为参数类型。这是 C# 中的示例
// Generate your password hash some way
byte[] passwordHash = new byte[] { 0x0, 0x1, 0x2 ... };
...
command.Parameters.Add("@passwordHash", SqlDbType.Binary);
command.Parameters["@passwordHash"].Value = passwordHash;
或者,如果您更喜欢 VB.NET
' Generate your password hash some way
Dim passwordHash As Byte() = New Byte() { &H0, &H1, &H2 ... }
...
command.Parameters.Add("@passwordHash", SqlDbType.Binary)
command.Parameters("@passwordHash").Value = passwordHash
我建议使用nvarchar(45)
Base64 将你的 32 个字节转换为字符串。这是保存哈希的标准方法。
或者,您可以nvarchar(64)
将其存储为十六进制字符串。