【问题标题】:HashBytes conversionHashBytes 转换
【发布时间】:2009-06-09 03:50:56
【问题描述】:

选择 HASHBYTES('sha','这是什么') 结果--0x2327A09C2FDAD132E436B5CC12E9D5D283B5BA69 是否可以将哈希字节转换回字符串'0x2327A09C2FDAD132E436B5CC12E9D5D283B5BA69'作为输入 想要以“它是什么”的形式发布?

【问题讨论】:

    标签: sql-server-2005 tsql cryptography


    【解决方案1】:

    绝对不是。根据定义,hash 是一种方式。

    您正在寻找的是encryption,您可以使用EncryptByCertDecryptByCert 函数来完成,详细解释here

    【讨论】:

      【解决方案2】:

      没有。这就是哈希的全部意义所在。

      您将它们用作密码之类的东西,这样每次有人尝试登录时,您都会计算他们尝试登录的密码的哈希值(加上盐),并将其与您存储的值进行比较。这样,即使有人(例如心怀不满的员工)找到了存储您密码的数据库的备份磁带和加密密钥,他们仍然无法登录您的系统并对实时数据采取行动。

      【讨论】:

        【解决方案3】:

        哈希函数被定义为“单向”,这意味着您将文本转换为摘要(您在上面看到的结果)。如果您将其用于密码加密,则可接受的用法是通过哈希函数运行用户输入(来自他们的密码表单)并验证它是否与存储的摘要匹配。

        如果您希望对提供的文本输入进行解密,您将需要研究其他加密解决方案,例如 Symmetric-keyAsymmetric-key 算法。

        当然,如果您正在做这些,您会想要sanitize您的输入。

        【讨论】:

          【解决方案4】:

          前面的海报提到的散列,绝对是一种单向操作。它需要一个(可能很大的)输入,并以这样一种方式快速处理输入,即输出是一个小但非常独特(基于输入)的输出。由于设计和具有小输出的性质,哈希无法撤消,因为原始输入已在转换中丢失。常见的散列算法包括 Message Digest 系列(通常是 MD5)和您在问题中提到的 SHA 系列。

          再次像之前的海报提到的那样,如果您正在寻找 2 路操作,那么您正在寻找加密。此外,如果您希望同一个用户同时加密和解密字符串,请坚持使用对称加密。今天在实践中使用的一些常见算法是 AES、DES 和 Blowfish。

          【讨论】:

            【解决方案5】:

            如果你有一个最小的完美哈希,那么至少你应该能够暴力破解原始输入。但大概这不是您要问的,如果这是正确的,那么请查看所有其他答案:)

            【讨论】:

              猜你喜欢
              • 2010-09-05
              • 1970-01-01
              • 2017-04-16
              • 1970-01-01
              • 2021-04-10
              • 2021-03-21
              • 2022-12-02
              • 1970-01-01
              • 2011-04-12
              相关资源
              最近更新 更多