问题标签 [hashbytes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 需要以下 SQL HashBytes 函数的等效 C#
我在 sql 中使用以下函数创建了哈希值
SQL查询
现在我需要获取等效的 C# 函数以获取哈希值并将其传递给存储过程。
我正在使用下面的代码来获得 c# 等效项。但值不匹配
C# 代码
以下是测试结果:
从 SQL 服务器:
在 C# 中,我从 DB 字段值中获取值,如下所示
从 C# GetMD5Hash 函数我得到如下值
任何建议将不胜感激。
c# - Hashbytes 计算的列不能被持久化,因为该列是不确定的
我正在尝试使用哈希datetime
列HashBytes
但由于它是不确定的,我得到这个错误:
计算列无法持久化,因为该列是不确定的。
我设法通过不指定如下格式来完成它
但是在 SQL Server 中,当我看到带有格式和不带格式的结果时,我得到相同字段值的不同结果:
结果:
第二个查询:
结果:
第三个查询:
结果:
基于上述研究,我理解的是 SQL Server 正在将日期戳转换为另一种格式,然后进行哈希处理。
但是,当我使用以下函数获得同一日期(“2016-06-30 12:19:35.257961”)的 C# 等效值时,它与哈希值 ( 0x3CB5C26B23EB4422515764686DFCAB82
) 不匹配。
任何人都可以完全匹配日期时间格式,因为它在 SQL Server 和 C# 中使用以使其与HashBytes
.
注意:我需要所有日期,包括毫秒。这个问题是对以下问题的跟进。它可能会帮助您了解根本问题。
c# - 不支持设置为“计算”的属性“StoreGeneratedPattern”。使用“身份”模式
我正在使用实体框架数据库第一种方法
我有一个表,在 ID(int,身份增量)上具有复合主键,HashKey(二进制)基于使用 sql hashbytes 的多个列自动生成。
以下是 EF 列映射
ID storeGeneratedPattern="Identity" 和 hashkey(binary) storeGeneratedPattern="Computed"。
当我尝试使用 EF 保存更改方法进行保存时,它会抛出异常。
“不支持修改主键列的属性‘StoreGeneratedPattern’设置为‘计算’的表。改用‘身份’模式。键列:‘HashKey’。表”
我在这些列(Id,Hashkey)上应用了复合主键以使搜索更快,因为它包含集群索引。但不确定 EF 是否支持这一点。
我看过下面的链接。但我不确定解决方案。
在 SaveChanges() 之后未更新 StoreGeneratedPattern 设置为 Identity 的属性
任何人都可以帮助解决这个问题。
javascript - 在 JavaScript 文件中生成 HASHBYTES
我必须生成一个安全令牌。此令牌将由 WebApi 使用。我通过 JavaScript 文件请求 Webapi。这是一个 SPA 应用程序。所以我的问题是,我可以在不使用 Sql 服务器响应的情况下生成下面提到的令牌吗?
sql - SQL Server HASHBYTES 转换不一致?
当我执行这个硬编码时,我得到了正确的结果:
结果: 4173AB4C6EE66BC1FF7B7E5D44A872CA(正确)
但是当我调用/执行这个存储过程,给它相同的参数时,它是一个不同的结果
我的执行:
结果: 5BD42777932EE959AD5A4C9FEE142F00(错误)
我哪里做错了?
sql - 使用 HASHBYTES (SHA1) 散列特定列会导致该列比未散列的列具有更多不同的行
简而言之,我有一个非常大database
的条目,有数十万个条目和数百个不同的列。
其中一些列需要进行散列以节省空间等。但是当我尝试像这样对它们进行散列时:
我最终得到的行数比我这样做的要多:
我最好的猜测是 select distinct 不区分大小写,而 Hashbytes 是。但我真的不知道如何测试或修复它。
有任何想法吗?
c# - CONVERT(NVARCHAR(100), HASHBYTES(N'SHA1', @PasswordWithSalt),2) 等效于 c#
我正在尝试将身份验证从存储过程转移到 EF。SQL 本身返回 2 个结果。我应该如何验证它们?
该值将根据存储在表中的值进行检查
SQL 语法:
结果:1 Quest_2016LCY'n
结果2:0xECC2065575DCBF977CD923996C598C3DC481404E-----
结果3:0x5E85AB2ED11CDB696BC0544131D7C8571F4F8FA8-----
还有这如何在 C# 中实现
sql - Binary_Checksum 与 HashBytes 函数
我有一个复杂的查询,它使用了很多二进制校验和函数,当我用一些测试数据对两个不同的记录进行测试时,它实际上返回了相同的校验和值。请在下面找到我使用的测试数据
现在我正在尝试将 HASHBYTES 函数与“MD5”算法一起使用,我可以确定获得唯一记录,但现在我担心的是在当前查询中我使用“校验和”值加入我的“合并”语句寻找新的记录。由于“HashBytes”返回给我 Varbinary 数据类型,当我用“HashByte”字段替换连接条件时,我可以预期多少性能开销。
此外,我需要为多个列创建散列,在这种情况下,我需要一个额外的 Concat 函数,这会对我的性能产生额外的开销。
sql-server-2012 - SHA2_256 Hashbytes 在不同版本的 SQL Server 2012 上生成不同的值
我面临一个奇怪的问题,我有一个来源 - SQL Server 2012 版本号。10.5.1753.0 - hashbyteSHA2_256
正在生成一个空值。
另一方面,我有另一个来源 - SQL Server 2012 版本号。11.0.3000.0 - hashbyteSHA2_256
正在生成一些值。
我必须处理这个问题,我不能向源所有者提出升级他们的版本的请求,我仍然需要从这个源中提取记录。
sql-server-2008-r2 - 最适合 SQL Server 2008 R2 的哈希字节算法
我在 SQL Server 2008 R2 中有包含 399 列的源表。
我想在上表中添加一个带有 hashbyte 的列,并使用 SSIS 包存储在 SQL Server 2016 的数据库中。
PS - 我不能要求源所有者将他/她的 SQL Server 升级到 2016,因此不能使用 SHA2_256。还有几点是: 1. 有几张表有超过 200 列,而一张表正好有 399 列。2. 我曾经使用过 MD5 算法,但我读到 MD5 可能会给你在 SQL 2016 中弃用的值。因此建议只使用 SHA2_256 或 SHA2_512。3.关于代码,它的简单截断并通过一些转换加载到目标表中。4. 我正在使用 HASH 来识别整行以进行更新或插入,因为 CHECKSUM 不可靠。