我需要允许网站的老用户使用相同的凭证访问新网站。数据库服务器版本是Microsoft SQL Server 2005,我没有权限更改数据库。数据库的密码列设置为varchar(50),摘要为48个字符。我所知道的关于密码的唯一信息是,它们已经用sha-256算法进行了哈希处理,但据我所知,阿沙-256摘要是64个字符,而不是48个。有可能用sha256生成同样的48长度摘要吗?
仅有的两个本机输出大小为192位(48十六进制* 1字节/2十六进制* 8位/字节)的原始哈希函数是HAVAL-192和TIGER-192。其他的都不完全匹配。
如果它们确实已经用sha256进行了哈希处理,那么它们可能会被截断(因为十六进制编码的sha-256摘要是64个字符。
要推断出确切的情况需要一些工作。这里有几种不同的方法。
>
如果我可以访问原始源代码,我会查看它。考虑到你问了这个问题,我认为这是不可能的。
如果我能在旧系统中写入记录,我会设置一个哨兵密码(或者找到一个我知道密码的帐户)。我知道的。然后我会从数据库中找到哈希结果。
所以现在我们知道< code>p=password和< code>h=4d9e...。
从这里开始,用sha256散列密码,看看你能得到什么。如果幸运的话,你会很快找到一个模式(就像hash的后半部分刚刚被切掉)。如果你运气不好,那就需要一些挖掘和反复试验。
因此,例如:
p = "password"
h = "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd6"
结果将是:< code > sha 256(p)[0:48] as < code > sha 256(p)= = " 5e 884898 da 28047151d 0 e 56 f 8dc 6292773603d 0 d6a abb DD 62 a 11 ef 721d 1542d 8 "
h = "51d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"
结果是:sha256(p)[16:48]
等等。
如果我无法访问已知密码,则无法测试该假设。因此,如果您没有源代码,并且不知道系统中的帐户,那么您基本上就不走运了。因此,请将前 2 个作为您的首要任务。
当心,你可能需要有创造力。完全有可能发生了一些奇怪的事情。例如:
salt = h[0:8]
tmp = sha256(p + salt)
h = salt + (tmp[0:16] xor tmp[16:16])
所以玩得开心点:-)
我使用的是Tomcat6,目前在MySql数据库中有作为明文密码工作的表单身份验证。我已经向密码添加了加密,以便在SHA-256中对密码进行哈希,它似乎有效,但是当我试图通过Tomcat6使用server.xml中的digest=“SHA-256”和digestencoding=“base64”进行身份验证时,它将无法进行身份验证。如果我从数据库中复制密码并将其输入到密码字段中,我可以对我的用户进
为什么他们不一样?我需要如何更改java版本以使其与Go版本完全相同?
我正在尝试使用亚马逊的弹性代码转换器。这里我需要sha-256散列一个字符串;http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html 我已经尝试了我在网上找到的任何方法,但我找不到与页面和一些在线哈希网站提供的相同的结果。 下面是要散列的字符串,您可以从上面的链接中找到; 以下是预期结果: 3
问题内容: 我在glassfish v3.0.1 b22中使用jdbcRealm进行安全保护。通过以下博客对其进行设置,使其使用我数据库中的USER表进行身份验证:http : //blogs.oracle.com/foo/entry/mort_learns_jdbc_realm_authentication。如果我将摘要算法保留为纯文本,那么我可以正常工作。但是,当我尝试将SHA-256用于摘要
我在这里漏掉了什么?我试过上/下现金,每个字节之间的空格。我不确定还能试什么。 这个问题开始是因为我在Python中实现了这个,但在我担心代码之前,我试图理解为什么这是不同的。
因此,我试图找出如何在ios上进行hmacshad256哈希,因为这是我为wcf服务api所做的哈希。我一直试图寻找一些关于它的信息,但通常只是最终得到一个SHA-256哈希。