2017-03-01 2 views
0

HASHBYTES関数は、サイズが制限された結果(たとえば20文字)を返し、衝突なしでハッシュ結果を確認できますか?SQL ServerでHASHBYTES関数を使用して制限サイズでハッシュ結果を返す方法

SQL Serverの、AzureのSQLデータベースの構文、AzureのSQLデータウェアハウス、並列データウェアハウス

HASHBYTES ('<algorithm>', { @input | 'input' }) 

    <algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512 

SELECT HASHBYTES('SHA1', 'This is a test.'); 

それは長さが長すぎる

0x0E7AAB0B4FF0FD2DFB4F0233E2EE7A26CD08F173 

を返します。私は0x0E7AAB0B4FF0FD2DFBのような最初の20文字が別の入力と衝突するかどうかはわかりません。実際には、SQL ServerのHASHBYTES関数を使用して、ユニークキーが入力を変換するようにしたいと考えています。

答えて

2

あなたが最初の20文字またはいくつかのランダムな文字列を選択した場合実は、私は

SQL ServerでHASHBYTES機能を用いて入力を変換から一意のキーを取得したいあなたの出力は、ユニークではないかもしれない

HASHBYTES関数は、制限されたサイズ(例えば20文字)の結果を返し、ハッシュ結果が衝突なしであることを確認できますか?私たちは、あなたの入力は8000があなたの入力は、8000文字(最大入力値)、のチャンスを下回っているcharacters..If超えた場合、衝突の可能性があります

出力の長さを制御していない

衝突が

Googleは異なる入力のための衝突を達成することができましたが、これは、コンピューティングパワー

以上必要なこの攻撃の下に必要な...非常にまれであり、あなたはスーパーコンピュータを持っていない限り不可能です9,223,372,036,854,775,808 SHA1計算。あなたは一意性が必要な場合は、シングルCPUの計算と、シングルGPUの計算

の110年の6500年は、そうあなたは、あなたが一意のキーを選択することができますcollisions..Furtherを心配する必要はありませんので、これは同等の処理能力を取り、 ...入力サイズのわからない

更新:ちょうどFYIとして

入力の長さの制限は、SQLServerの2016 SP1から削除されました

参考文献:
https://dba.stackexchange.com/questions/35219/choosing-the-right-algorithm-in-hashbytes-function
https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html

+0

私の入力は100文字未満になり、私は結果が一意のキーのための20個の文字を返したい、私はどのように行うことができますか? – WLiu

+1

結果セットのサイズを制限して一意性を保証することはできません – TheGameiswar

+0

返信いただきありがとうございます。 – WLiu

関連する問題