1

次のようにSQLでパスワードを直接ハッシュしています:

DECLARE @HashThis nvarchar(4000);
SET @HashThis = 'SecretPizza'

INSERT into Users (UserId,Password)
Values ('CryptTest',HASHBYTES('SHA1', @HashThis))

結果 :

ここに画像の説明を入力

SHA1アルゴリズムをSHA2_256またはに変更しようとするとSHA2_512、次のエラーが発生します。

ここに画像の説明を入力

質問 1 - これは本当に中国語のような文字を与えることになっていますか?
質問 2 - これらは有効なアルゴリズムですが、なぜ使用できず、暗号化設定@HashThisが null になっているのですか?

4

2 に答える 2

5

質問 1: HASHBYTES によって返された varbinary 値を nvarchar 列に挿入しているため、"中国語のような" 文字が表示されるため、SQL Server はバイトを Unicode コード ポイント (文字) として解釈しようとします。

質問 2: SQL Server 2012 より前ではサポートされていません - SQL Server 2008 R2 HASHBYTES SHA2 が null を返すを参照してください

于 2012-07-27T15:59:54.113 に答える
0

最初にする

デュアルから HASHBYTES('SHA2-256', @HashThis) を選択します。

そして、あなたが得るものを見てください..

于 2012-07-27T15:48:18.330 に答える