userpassword フィールドに varbinary データ型があるテーブルがあるため、varchar データを保存するとエラーが発生するため、どの形式でデータを userpassword フィールドに保存する必要があるか混乱しています。
85128 次
4 に答える
27
列にvarbinaryは何でも格納できます。文字列を格納するには、次のようにキャストする必要がありますvarbinary。
declare @t table (id int identity, pwd varbinary(50))
insert into @t (pwd) values (cast('secret' as varbinary(50)))
ただし、パスワードの場合、varbinary通常、列には何らかのハッシュが格納されます。たとえば、次のHashBytes関数を使用した SHA1 ハッシュ:
insert into @t (pwd) values (HashBytes('sha1', 'secret'));
実際のパスワードの代わりに一方向ハッシュを保存すると、より安全になります。パスワードが一致するかどうかを確認できます。
select * from @t where pwd = HashBytes('sha1', 'secret')
ただし、テーブルを見てパスワードを取得する方法はありません。そのため、自分のパスワードを知っているのはエンド ユーザーだけであり、DBA でさえパスワードを取得することはできません。
于 2010-07-18T12:53:52.940 に答える
1
VARCHAR を明示的にキャストする必要があります。
SELECT CAST(N'Test' as VARBINARY)
SQL Server のエラー メッセージには、次のように書かれています。
データ型 varchar から varbinary への暗黙的な変換は許可されていません。
于 2010-07-18T12:55:14.877 に答える
1
SQL Server では、MSDN の CAST および CONVERT に関するビッグ テーブルに従って、varchar から varbinaryへの明示的な変換が必要です。
于 2010-07-18T12:55:58.963 に答える
0
SELECT CAST(N'Test' as VARBINARY)
------サイズを指定する必要があります ---------->
SELECT CAST(N'Test' as VARBINARY(30))
于 2019-01-19T00:27:23.250 に答える