29

我希望使用一种方法来保存需要使用字节数组的密码,如本文所述

那么我应该在sql server中使用哪种数据类型来保存字节数组?以及如何使用 SqlCommand 传递和检索字节数组?

4

3 回答 3

31

如果它总是相同的长度,那么binary(length)将是合适的。如果它的长度会有所不同,请使用varbinary(maxlength).

二进制和 varbinary

而且,正如@pswg 所说,您可以通过将其放入合适的参数中来从代码中传递它。

于 2013-03-20T08:02:47.093 回答
6

只需使用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
于 2013-03-20T07:54:07.790 回答
0

我建议使用nvarchar(45)Base64 将你的 32 个字节转换为字符串。这是保存哈希的标准方法。

或者,您可以nvarchar(64)将其存储为十六进制字符串。

于 2016-04-01T03:18:45.517 回答