HashBytes转换

时间:2009-06-09 03:50:57

标签: sql-server-2005 tsql cryptography

选择HASHBYTES('sha','它是什么') 结果--0x2327A09C2FDAD132E436B5CC12E9D5D283B5BA69 是否可以将反向哈希字节转换为字符串'0x2327A09C2FDAD132E436B5CC12E9D5D283B5BA69'作为输入 我想把它作为'它是什么'而出来?

5 个答案:

答案 0 :(得分:10)

绝对不是。根据定义,hash是单向的。

您要找的是encryption,您可以使用EncryptByCertDecryptByCert函数执行此操作,详细说明here

答案 1 :(得分:0)

没有。这就是哈希的重点。

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

答案 2 :(得分:0)

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

如果您希望解密所提供的文本输入,您需要查看其他加密解决方案,例如Symmetric-keyAsymmetric-key算法。

当然,如果您正在执行此操作,您将需要sanitize您的意见。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

如果你有一个最小的完美哈希,那么至少你应该能够强制原始输入。但是大概这不是你要问的,如果那是对的,那么看看所有其他答案:)