问题标签 [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.
sql - 在“MD5”附近插入哈希字节语法不正确
我正在使用 SQL Server 2014。作为更大任务的一部分,我需要从表中检测更新等,因此我正在实现 Hashbytes。Hasbytes 字段定义为varbinary(MAX)
。
这是我的 SQL:
但是,我只是不断收到错误:
'MD5' 附近的语法不正确。
我哪里错了?
python - 从 python 调用时,sql 中的 HASHBYTES、sha2_256 会引入坏字符
我们的旧 sql 遗留代码之一,使用 HASHBYTES 函数和 sha2_256 转换 sql 中的数字列。
整个过程正在转向 python,因为我们在遗留工作的基础上进行了一些高级用法。但是,当使用连接器时,我们调用的是相同的 sql 代码,HASHBYTES('sha2_256',column_name) id 返回值很多垃圾。
在sql中运行代码会导致这个
从 python 运行相同的 sql 查询会导致
b"z\xc8+'y\x11o@\xa8\xce\xa0\xd8[\xe4\xaa\x02\xaf\x7f\x81;S\x83\xba\xc6\r^q\xb7\xbd\xb9\ xf7\x05"
代码是
我尝试过通常的垃圾清除但没有帮助
mysql - 使用非英文文本时在 mysql 中等效的哈希字节
当我使用非英文字符时,生成的哈希值不一样,但除此之外,一切都很好。有没有人有解决方案来获得相同的结果?
MYSQL
SQL 服务器
sql-server - HASHBYTES SHA2-256 函数生成的列的 SSIS 违反主键约束错误
我遇到了一个超出我的谷歌搜索能力的问题,如果有任何帮助,我将不胜感激。
我创建了一个非常简单的 SSIS 包,用于使用 OLEDB 连接将数据从 Azure SQL 数据库中的源表复制到 MS SQL 数据库中的目标。目标表是从源数据库生成的脚本创建的(在 SSMS 中,我右键单击数据库名称 -> 任务 -> 生成脚本),因此它们应该是相同的。SSIS 包不进行任何转换——它是对目标表的简单截断,然后是具有连接到 OleDBDestination 的 OleDBSource 的数据流任务。
但是,我在执行包时收到以下错误:
所讨论的主键列的数据类型为 char(32),并使用 HASHBYTES 函数使用“SHA2_256”算法生成。错误消息给出了一个错误的主键示例,基本上是一系列空格。当我查看 Source 表时,看起来确实有多行,其中主键只是一系列空格。但我猜 Azure SQL 可以以某种方式区分它们,因为 Source 表上没有主键问题。只有当我尝试将数据复制到本地 MS SQL Server 数据库时,我才会遇到主键违规。
我尝试过的事情:
检查源和目标表列、数据库和服务器上的排序规则设置是否相同。
检查 SSIS 数据流源和目标的高级编辑器以确保代码页相同。
删除目标表上的主键约束,然后使用 SSIS 移动数据,然后运行查询以比较 SSIS 传输的哈希值与完全生成新哈希值。对于大约 8% 的表,SQL Server 认为传输的散列与新散列不匹配,尽管散列通常看起来相似。这是查询:
基于#3,我的猜测是发生以下情况之一:
SSIS 在将数据从源复制到目标时以某种方式转换哈希。
目标列/表/数据库具有一些设置,使其存储 char(32) 数据的方式与源列/表/数据库不同。
某种错误。
任何人有任何经验可以帮助阐明这个问题吗?
java - Java中是否有等效于T-SQL的 HASHBYTES('SHA1', VARBINARY(MAX)) ?
我正在使用 org.apache.commons.codec.digest.DigestUtils 库来计算 Java 中的 SHA1 哈希。
DigestUtils.sha1Hex("0x808204E039EFB76D96D3780BB507674")
.
不幸的是,这并没有给出与下面的 SQL 语句相同的结果?
varbinary 的等价物是 Java 中的 byte[]。所以,我试过DigestUtils.sha1Hex("0x808204E039EFB76D96D3780BB507674".getBytes())
了,但这也没有帮助。请指导。
sql-server - 将 HASBYTES 函数输出转换为 CHAR
我知道存储HASHBYTES
函数输出的最佳数据类型是BINARY/VARBINARY
,但我们希望按照CHAR
DataVault 最佳实践的建议存储它,而且并非所有收费都支持BINARY
类型的键,例如 PowerBI。
所以问题是,如何将其转换为CHAR
? 当我做简单时,CAST/CONVERT
我得到不同的输出而不是HASHBYTES
函数的原始输出。
预期值为098F6BCD4621D373CADE4E832627B4F6
(不带0x
),实际值为 kÍF!ÓsÊÞNƒ&'´ö
c# - 将使用 PWDENCRYPT 创建的密码转换为 HASHBYTES
我们一直PWDENCRYPT
在我们的网站中使用散列密码 - 但想将其更改为使用HASHBYTES
.
是否可以使这种转换自动进行?我知道不可能解密这些字符串 - 但是我要考虑什么来进行这种转换?
提前感谢您的回答。
sql-server - 哈希不匹配
我正在散列相同的值,但得到不同的结果。
这是一个简化的示例来解释我遇到的情况:
我有一个看起来像这样的维度表:
性别 | 性别ID |
---|---|
男性 | 1 |
女性 | 0 |
性别的数据类型是 NVARCHAR(6),gender_id 是 INT
当我执行以下任何查询时,我得到相同的哈希:
输出:'0x6B216D8BB993AA263265CCF645C282B100000000'
输出:'0x6B216D8BB993AA263265CCF645C282B100000000'
在场景 1 中,我将 gender_id 转换为 INT,在场景 2 中,我将 gender_id 转换为 NVARCHAR。在这两种情况下,哈希都是相同的。
当我对维度中的特定值而不是列执行查询时,我的哈希值是不同的:
输出:'0x048A5F0EE2D2B4070CFF8A38CB6DAC7100000000'
输出:'0x6B216D8BB993AA263265CCF645C282B100000000'
在场景 3 中,我将 1 转换为 INT,就像我在场景 1 中所做的那样。在场景 4 中,我将 1 转换为 NVARCHAR,就像我在场景 2 中所做的那样。但是,场景 3 和 4 具有不同的哈希值。除此之外,场景 4 的哈希值与场景 1 和 2 中的哈希值一致。
我无法理解为什么场景 1、2 和 4 的哈希值相同,但场景 3 的哈希值不同。在我的维度中,gender_id 是一个 INT。当我查询我的维度时,无论我如何转换它,哈希总是相同的。在场景 3 和 4 中,当我用实际值替换列名时,结果会发生变化。除非我将其转换为 NVARCHAR,否则场景 3 中的哈希将不匹配场景 1 和 2。为什么会这样,因为gender_id 自然是一个INT?
将不胜感激您的任何见解,并很乐意在需要时提供更多说明。
谢谢!
sql-server - 从独立于 SQL Server 版本的 HASHBYTES('SHA1', text) 获取短哈希值?
为了获得较长文本的内容派生密钥,我计算了HASHBYTES('SHA1', text)
. 它返回 20 个字节长varbinary
。由于我知道结果的长度,我将其存储为binary(20)
.
为了使其更短(用作键),我想遵循 Git 的短散列思想——就像十六进制表示的第一个(或最后一个)字符一样。而不是字符,我想binary(5)
从binary(20)
.
尝试使用 SQL Server 2016 时,似乎采用以下简单方法:
返回前导字节(高位字节):
不保证任何数据类型和二进制数据类型之间的转换在 SQL Server 版本之间是相同的。
好吧,这不完全是一种转换。尽管如此,这种不确定性是否也适用于binary
从较长版本的binary
? 对于 SQL Server 的未来版本,我应该期待什么?