-1

私のテーブルtestuidpwdには次のものがあります:

ユーザー:

Uid Password Passwordhash
----------------------------------------    
121 wrwrwr 0x0013531FA845AEA1E840BDE787336ED3CAEDFE6E
122 etetxw 0x79BAEFD23C2F4D146F9BD2FDF6C14CA25AC5D6AA
  • uid charデータ・タイプ
  • password nvarchar(100)データ・タイプ
  • passwordhash nvarchar(100)データ・タイプ

私の問題は、関数を使用するときですhashbytes('SHA1',password)

update testdb.dbo.testuidpwd 
set pwdhash = HashBytes('SHA1', password)

pwdhashnvarchar(100)データ型です。

以下のステートメントを実行すると

update testdb.dbo.testuidpwd 
set pwdhash=HashBytes('SHA1', password)

pwdhash硽贕ڷד瘃快ﭙ寱캏엞という形でコラムを頂きました

varbinaryしかし、フォーマットを保存したい......pwdhash列に

例:

update testdb.dbo.testuidpwd 
set pwdhash = cast(hashbytes('SHA1', PWD) AS varbinary)

このステートメントも機能しません

4

1 に答える 1

1

varbinaryバイナリ値を列に格納する方が簡単です。

とはいえ、SQL 2008以降では、CONVERT関数はバイナリからchar型への変換用のスタイルパラメータを追加します(MSDNページの「バイナリスタイル」のセクションを参照)。

これは機能するはずです(SQL 2008以降を使用している場合)。

update testdb.dbo.testuidpwd 
set pwdhash=CONVERT(NVARCHAR(100),HashBytes('SHA1', password),1)

先頭なしで値を保存する2代わりに、スタイルをに設定できます10x

于 2012-10-31T13:08:57.930 に答える