web-dev-qa-db-ja.com

SQLサーバーにバイト配列を保存する

このようにバイト配列を使用する必要があるパスワードを保存するアプローチを使用しようとしています post

バイト配列を保存するためにSQLサーバーでどのデータ型を使用する必要がありますか?そして、SqlCommandを使用してバイト配列をどのように受け渡しできますか?

19
user2155873

常に同じ長さになる場合は、binary(length)が適切です。長さが異なる場合は、varbinary(maxlength)を使用します。

バイナリおよびvarbinary

そして、@ p.s.w.gが言うように、適切なパラメーターに配置することでコードから渡します。

23

パラメータタイプとして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
4
p.s.w.g

nvarchar(45)とBase64を使用して32バイトを文字列にすることをお勧めします。これはハッシュを保存する標準的な方法です。

または、nvarchar(64)を実行して、16進文字列として保存することもできます。

0
Andrew Hoffman