Сохранить массив байтов в sql-сервере

Я хочу использовать подход при сохранении паролей, который требует использования массива байтов, как в этом сообщении

Итак, какой тип данных я должен использовать в sql-сервере для сохранения массива байтов? и как я могу передать и получить массив байтов, используя SqlCommand?

Ответ 1

Если он всегда будет иметь одинаковую длину, тогда будет пригодна binary(length). Если он будет меняться по длине, используйте varbinary(maxlength).

двоичный и varbinary.

И, как говорит @pswg, вы передаете его из кода, помещая его в подходящий параметр.

Ответ 2

Просто используйте byte[] же, как и любой другой параметр, указав SqlDbType.Binary в качестве типа параметра. Здесь образец в С#

// 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

Ответ 3

Не знаю, сколько лет это, но я бы порекомендовал nvarchar (45) и Base64 ваши 32 байта в строку. Это стандартный способ сохранения хэша. В качестве альтернативы вы можете сделать nvarchar (64) и сохранить его как шестую строку.