HASHBYTES (Transact-SQL)

適用対象: SQL Server (サポートされているすべてのバージョン) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

SQL Server で入力の MD2、MD4、MD5、SHA、SHA1、または SHA2 ハッシュを返します。

Topic link iconTransact-SQL 構文表記規則

構文

HASHBYTES ( '<algorithm>', { @input | 'input' } )  
  
<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512   

Note

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

<algorithm>
入力のハッシュに使用するハッシュ アルゴリズムを指定します。 これは必須の引数で、既定値はありません。 単一引用符で囲む必要があります。 SQL Server 2016 (13.x) 以降、SHA2_256 と SHA2_512 以外のすべてのアルゴリズムは非推奨とされました。

@input
ハッシュされるデータを含む変数を指定します。 @input は、varcharnvarchar、または varbinary です。

'input'
ハッシュする文字またはバイナリ文字列に評価される式を指定します。

出力はアルゴリズムの標準に準拠します。MD2、MD4、および MD5 の場合は 128 ビット (16 バイト)、SHA および SHA1 の場合は 160 ビット (20 バイト)、SHA2_256 の場合は 256 ビット (32 バイト)、SHA2_512 の場合は 512 ビット (64 バイト) です。

適用対象: SQL Server 2012 (11.x) 以降

SQL Server 2014 (12.x) 以前の場合、指定できる入力値は 8000 バイトまでに制限されます。

戻り値

varbinary (最大 8,000 バイト)

注釈

ハッシュ値を計算するための別の方法として、CHECKSUM または BINARY_CHECKSUM の使用を検討してください。

SQL Server 2016 (13.x) 以降では、MD2、MD4、MD5、SHA、SHA1 のアルゴリズムは非推奨です。 代わりに SHA2_256 または SHA2_512 を使用してください。 以前のアルゴリズムは引き続き機能しますが、Deprecation イベントが発生します。

変数のハッシュを返す

次の例では、変数 @HashThis に格納されている nvarchar 型のデータの SHA2_256 ハッシュを返します。

DECLARE @HashThis NVARCHAR(32);  
SET @HashThis = CONVERT(NVARCHAR(32),'dslfdkjLK85kldhnv$n000#knf');  
SELECT HASHBYTES('SHA2_256', @HashThis);  

テーブル列のハッシュを返す

次の例では、テーブル Test1 内の列 c1 の値の SHA2_256 ハッシュを返します。

CREATE TABLE dbo.Test1 (c1 NVARCHAR(32));  
INSERT dbo.Test1 VALUES ('This is a test.');  
INSERT dbo.Test1 VALUES ('This is test 2.');  
SELECT HASHBYTES('SHA2_256', c1) FROM dbo.Test1;  

結果セットは次のようになります。

-------------------------------------------  
0x741238C01D9DB821CF171BF61D72260B998F7C7881D90091099945E0B9E0C2E3 
0x91DDCC41B761ACA928C62F7B0DA61DC763255E8247E0BD8DCE6B22205197154D  
(2 row(s) affected)  

参照

暗号化アルゴリズムの選択CHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)