このようにバイト配列を使用する必要があるパスワードを保存するアプローチを使用しようとしています post
バイト配列を保存するためにSQLサーバーでどのデータ型を使用する必要がありますか?そして、SqlCommandを使用してバイト配列をどのように受け渡しできますか?
常に同じ長さになる場合は、binary(length)
が適切です。長さが異なる場合は、varbinary(maxlength)
を使用します。
そして、@ p.s.w.gが言うように、適切なパラメーターに配置することでコードから渡します。
パラメータタイプとして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
nvarchar(45)
とBase64を使用して32バイトを文字列にすることをお勧めします。これはハッシュを保存する標準的な方法です。
または、nvarchar(64)
を実行して、16進文字列として保存することもできます。