2016-04-16 27 views
2

我想在C#中檢索相同的校驗和值而不是使用SQL代碼?在C#和SQL中的相同的校驗和

目標是在c#中檢索相同的值而不是使用SQL代碼。

是否可以做到這一點?

我找不到任何好的答案給我的問題。

http://sqlfiddle.com/#!6/eb6d0/3/0

+0

不知道答案,但我很好奇,你爲什麼需要這個? –

+0

創建臨時主鍵 –

+0

您可以嘗試查看'HASHBYTES'功能。這個可能更可靠,更容易在C#中實現。 –

回答

2

根據這個老article

內置在SQL Server CHECKUM功能是建立在留下了一系列4位的旋轉XOR運算

所以你可以嘗試在C#中實現這個算法。

但是,該文章指出,從碰撞的角度來看這種方法是不可靠的,所以可能根本不應該使用這個函數。

我會建議使用HASHBYTES與任何可靠的算法,即MD5而不是這個CHECKSUM。同時,C#有built in functions for MD5

byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes("[email protected]")); 
0

微軟的要求是使用HASHBYTES而不是校驗功能,因爲HASHBYTES比Checksum方式更有效。

我不知道CHECKSUM使用的算法是什麼,但HASHBYTES可以使用這些散列算法(MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512)。你可以很容易地用System.Security.Cryptography中的HashAlgorithm類在C#中做同樣的事情。