首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用雪花SHA1 1/标准SHA1函数需要Server SHA1输出

使用雪花SHA1 1/标准SHA1函数需要Server SHA1输出
EN

Stack Overflow用户
提问于 2022-01-11 14:55:51
回答 2查看 409关注 0票数 0

我们正在将SQL服务器命令/脚本迁移到雪花SQL,并陷入了这个特定的查询。我们一直在使用Server中的HASHBYTES函数将此字符串哈希为SHA1算法。不幸的是,我们的SQL server命令的输出与雪花或任何其他转换器不匹配。

Server代码:

代码语言:javascript
复制
select hashbytes('sha1',cast('214163915155286001' as varchar(18)))

Server输出:

代码语言:javascript
复制
"GRHT33lIRvvHTg5M8pEzRZRm4Oc="

我们尝试用雪花编写上面的代码,如下所示:

雪花SQL:

代码语言:javascript
复制
Select sha1('214163915155286001')

雪花产量:

代码语言:javascript
复制
"1911d3df794846fbc74e0e4cf29133459466e0e7"

我们使用任何其他标准SHA1转换器获得相同的输出,但现在我们需要的值与从获得的值完全相同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-11 15:40:35

您可以使用以下转换在雪花中获得相同的结果:

代码语言:javascript
复制
select to_char(to_binary(sha1('214163915155286001'), 'hex'), 'base64') as Result;

+------------------------------+
|            RESULT            |
+------------------------------+
| GRHT33lIRvvHTg5M8pEzRZRm4Oc= |
+------------------------------+

这是一种魔力:)

票数 2
EN

Stack Overflow用户

发布于 2022-01-12 20:43:47

Gokhan的回答是如何得到你想要的答案。但了解你所拥有的也许会有帮助,

"1911d3df794846fbc74e0e4cf29133459466e0e7"是SHA1哈希,表示为哈希的字符串。如果您正在对数据SHA1进行比较,以检查“相同而不更改”(SHA1 1确认此功能的能力极限),您将使用该方法。

"GRHT33lIRvvHTg5M8pEzRZRm4Oc="是BASE64编码的字符串。通常的赠品是=末端的等价物。但是,在可打印令牌范围内,base64并不总是将3x2^8 (256)二进制数据编码为4x2^6 (64)流的块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70668869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档