【问题标题】:Same Checksum in C# and SQLC# 和 SQL 中的校验和相同
【发布时间】:2016-04-16 14:40:37
【问题描述】:

我想在 C# 中检索相同的校验和值而不是使用 SQL 代码?

目标是在 c# 中检索相同的值,而不是使用 SQL 代码。

有可能吗?

我的问题找不到任何好的答案。

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

【问题讨论】:

标签: c# sql sql-server tsql checksum


【解决方案1】:

据这位老article

SQL Server 中内置的 CHECKUM 函数是建立在一系列 4 位左旋异或操作之上的

所以你可以尝试在 C# 中实现这个算法。

但是,那篇文章指出,从碰撞的角度来看,这种方法并不可靠,因此您可能根本不应该使用此功能。

我建议将HASHBYTES 与任何可靠的算法一起使用,即 MD5 而不是这个 CHECKSUM。同时C#有built in functions for MD5

byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes("admin@sqlfiddle.com"));

【讨论】:

    【解决方案2】:

    Microsoft 的要求是使用 HASHBYTES 而不是 CHECKSUM 函数,因为 HASHBYTES 比 CHECKSUM 更有效。

    我不知道CHECKSUM使用的是什么算法,但是HASHBYTES可以使用这些哈希算法(MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512)。您可以使用 System.Security.Cryptography 中的 HashAlgorithm 类在 C# 中轻松完成相同的操作。

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      相关资源
      最近更新 更多