我希望使用一种方法来保存需要使用字节数组的密码,如post
所示那么我应该在sql server中使用哪种数据类型来保存字节数组?以及如何使用SqlCommand传递和检索字节数组?
答案 0 :(得分:23)
如果它总是长度相同,那么binary(length)
将是合适的。如果长度不同,请使用varbinary(maxlength)
。
并且,正如@ p.s.w.g所说,您可以通过将其放入合适的参数来从代码中传递它。
答案 1 :(得分:4)
只需使用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
答案 2 :(得分:0)
我建议将{32}字节中的nvarchar(45)
和Base64用于字符串。这是保存哈希的标准方法。
或者你可以nvarchar(64)
并将其存储为十六进制字符串。