2017-01-25 5 views
0

SQL文を使用して古いデータからMSSQLに手動でインポートしています。 生のテキストパスワードからデータベースのMVC 5のpasswordHASHフィールドにハッシュしているとき面白い文字が表示されます。私はmvc5アイデンティティテーブルにハッシュを挿入する方法は?MVC 5の表は、使用のデータ型はnvarcharパスワードをハッシュするSQL

select HASHBYTES('SHA2_512', '[email protected]')as beforehash --looks good in result 
0x6BFCC4026B5F162799A6DC8305C09DB9C1674AC616BD5C7422A45FBB6D0816AC163047C47A1F426F4F4C6B5B5042C671EABC4FDC7310FD5B183EEF59DC274604 

declare @afterhash nvarchar(128) 
set @afterhash=HASHBYTES('SHA2_512', '[email protected]') 
select @afterhash as afterhash --funny character if put inside a variable or insert to data base 

ﱫ˄彫✖ꚙ菜쀅릝柁왊봖瑜ꐢ뭟࡭갖〖쑇ὺ潂䱏孫䉐燆볪�ၳ寽㸘姯⟜ц 
+2

これを挿入するフィールドのタイプは何ですか?そのバイナリ/ varbinaryの場合は、nvarchar(おそらくそうでなければならない)で16進数の値を*文字列として使用する場合は、 'CONVERT(NVARCHAR(130)、HASHBYTES( 'SHA2_512 '、' P @ ssw0rd '))、1) '(最後の引数を' 2'に変更して '0x'を失う) –

+0

nice。私も同様にメソッドを変換しようとしました。しかし、私は引数を追加しませんでした。引数を追加した後、正しい出力となります。ありがとう –

答えて

3

hashbytesはあなたがnvarchar変数に挿入しようとしているvarbinaryデータ型を返します。

あなたはバイナリとしてこの値を格納したいが、あなたは現在、あなたが0x 2進接頭辞を維持するかどうかに応じて、カップルのオプションを持って見ることができるテキストをしたくない場合は、次の

declare @afterhash varbinary(500) = HASHBYTES('SHA2_512', '[email protected]') 

select @afterhash as varbinaryValue 
     ,convert(nvarchar(1000), @afterhash, 1) as nvarcharIncludePrefix 
     ,convert(nvarchar(1000), @afterhash, 2) as nvarcharExcludePrefix 

出力:

varbinaryValue   - 0x6BFCC4026B5F162799A6DC8305C09DB9C1674AC616BD5C7422A45FBB6D0816AC163047C47A1F426F4F4C6B5B5042C671EABC4FDC7310FD5B183EEF59DC274604 
nvarcharIncludePrefix - 0x6BFCC4026B5F162799A6DC8305C09DB9C1674AC616BD5C7422A45FBB6D0816AC163047C47A1F426F4F4C6B5B5042C671EABC4FDC7310FD5B183EEF59DC274604 
nvarcharExcludePrefix - 6BFCC4026B5F162799A6DC8305C09DB9C1674AC616BD5C7422A45FBB6D0816AC163047C47A1F426F4F4C6B5B5042C671EABC4FDC7310FD5B183EEF59DC274604 
関連する問題