【问题标题】:How to select SHA1 hash values correctly?如何正确选择 SHA1 哈希值?
【发布时间】:2016-07-06 11:36:17
【问题描述】:

我需要从 Microsoft SQL Server 数据库中提取 SHA1 密码,以便在外部系统中使用它们。

当我对已知密码进行简单的选择查询时,我得到这个结果(密码是“密码”):

"{SHA1=5b9febc2d7429c8f2002721484a71a84c12730c7}"

但应该是5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

知道如何选择它来获得预期值5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8吗?

【问题讨论】:

  • 请粘贴您的脚本
  • 为什么不能只使用字符串函数来做到这一点? Stack Overflow 不是代码编写服务。
  • 我的问题不只是选择值。我的问题是哈希值不匹配。
  • 啊,我忽略了这一点,因为前两个字母同意:)
  • 在这种情况下,您如何期望根据当前提供的信息得到答案?任何人都应该如何弄清楚为什么数据库中的值与您的期望不符?我们不知道您期望什么以及数据库中存储了什么。

标签: sql sql-server tsql encryption sha1


【解决方案1】:

SHA1 散列是针对字节而不是字符进行的,因此确保从字符到字节的转换是通过约定的编码完成的。

5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 是以 ASCII/UTF-8 编码的password 的 SHA1 哈希。

5b9febc2d7429c8f2002721484a71a84c12730c7 是以 UTF-16-BE 编码的password 的 SHA1 哈希。

要解决此问题,请选择一种编码,然后更改使用另一种编码的任何代码以进行匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多