Sql server 在sql server中保存字节数组

Sql server 在sql server中保存字节数组,sql-server,bytearray,sqlcommand,Sql Server,Bytearray,Sqlcommand,我正在寻找一种保存密码的方法,这种方法需要使用字节数组 那么,我应该在sql server中使用哪种数据类型来保存字节数组呢?如何使用SqlCommand传递和检索字节数组?只需使用byte[]与使用任何其他参数相同的方法,将SqlDbType.Binary指定为参数类型。这里有一个C语言的示例# 或者如果您更喜欢VB.NET ' Generate your password hash some way Dim passwordHash As Byte() = New Byte() { &

我正在寻找一种保存密码的方法,这种方法需要使用字节数组


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

只需使用
byte[]
与使用任何其他参数相同的方法,将
SqlDbType.Binary
指定为参数类型。这里有一个C语言的示例#

或者如果您更喜欢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

如果它总是相同的长度,那么
binary(length)
将是合适的。如果要改变长度,请使用
varbinary(maxlength)


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

我建议使用
nvarchar(45)
和Base64将您的32字节放入字符串中。这是保存散列的标准方法


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

使用二进制sql数据类型可以吗?当我在谷歌上搜索到一些人告诉我它用于像图像这样的大二进制文件时,你同意吗?@user2155873使用
VARBINARY(MAX)
来处理一些大的或长度不同的文件。对于密码散列,请使用
二进制(32)
(或者不管散列的长度有多长)。@user2155873-假设您可以声明一个
二进制(5)
,它为5个字节分配存储空间,你会说那只适合存储大文件吗?我读过关于这个主题的Microsoft文档,从来没有看到过将哈希转换为Base64的建议。无论如何,为什么不将散列保存为字节数组呢?
' 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