最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何使用bcrypt比较迁移数据的旧密码?

IT培训 admin 5浏览 0评论

如何使用bcrypt比较迁移数据的旧密码?

我最近使用Pentaho ETL工具将我的用户表从SQL Server迁移到Mongodb。密码字段是二进制数据类型,但是我使用bycrypt在Nodejs中为所有新用户创建哈希密码,那么如何将我的旧用户密码与bcrypt进行比较,因为它是使用SQL Server加密的?

以下是SQL Server密码示例:

0x010000008F0985DA84A7F12633E8EF1AA121A0AE6FB0F4049F9BDDAF326045AA8F5F6AF7

回答如下:

通常,密码哈希算法将包含一个salt,正如Markus所指出的,SQL Server使用SHA系列哈希算法。之前的useful link supplied显示,使用SHA1对从0x0100开始的哈希进行哈希处理。

此外,SQL Server似乎使用了一个salting系统,非常正确。这样做的目的是确保即使彩虹表可用于特定的散列算法,添加这个额外的随机混淆意味着每行需要自定义彩虹表,这与需要强行每行而不需要预计算帮助。

盐倾向于合并为哈希值,但它们本身并不是秘密,因此可以简单地提取它们。所以,一切都不会丢失 - 这就是你需要做的:

首先在Mongo中实现旧算法

  • 使用上面的链接来确定该字段的哪个部分是哈希,哪个部分是盐。
  • 使用SQL Server开始,您应该能够基于此算法重新创建哈希值: hash = algorithm(password + salt) 当然,您需要知道密码的行,但您可以为此创建一个虚拟行。
  • 然后,一旦解决了这个问题,将每行的哈希值和salt值复制到Mongo数据库
  • 在Mongo和/或Node中重新创建SQL Server代码
  • 在每个Mongo用户文档中添加一个新值来表示您正在使用的算法(可能是sha1

下次看到密码时,将用户转移到新算法

  • 当用户登录到您的新系统时,他们将提供密码,您可以根据算法列查找要执行的测试。
  • 如果他们成功登录并且他们有旧算法,则根据Bcrypt重新创建散列,然后将算法值更改为bcrypt

我将把提取哈希和盐的具体任务留给读者作为练习。无论如何,它看起来几乎都是在提供的链接中拼写出来的。

如何使用bcrypt比较迁移数据的旧密码?

我最近使用Pentaho ETL工具将我的用户表从SQL Server迁移到Mongodb。密码字段是二进制数据类型,但是我使用bycrypt在Nodejs中为所有新用户创建哈希密码,那么如何将我的旧用户密码与bcrypt进行比较,因为它是使用SQL Server加密的?

以下是SQL Server密码示例:

0x010000008F0985DA84A7F12633E8EF1AA121A0AE6FB0F4049F9BDDAF326045AA8F5F6AF7

回答如下:

通常,密码哈希算法将包含一个salt,正如Markus所指出的,SQL Server使用SHA系列哈希算法。之前的useful link supplied显示,使用SHA1对从0x0100开始的哈希进行哈希处理。

此外,SQL Server似乎使用了一个salting系统,非常正确。这样做的目的是确保即使彩虹表可用于特定的散列算法,添加这个额外的随机混淆意味着每行需要自定义彩虹表,这与需要强行每行而不需要预计算帮助。

盐倾向于合并为哈希值,但它们本身并不是秘密,因此可以简单地提取它们。所以,一切都不会丢失 - 这就是你需要做的:

首先在Mongo中实现旧算法

  • 使用上面的链接来确定该字段的哪个部分是哈希,哪个部分是盐。
  • 使用SQL Server开始,您应该能够基于此算法重新创建哈希值: hash = algorithm(password + salt) 当然,您需要知道密码的行,但您可以为此创建一个虚拟行。
  • 然后,一旦解决了这个问题,将每行的哈希值和salt值复制到Mongo数据库
  • 在Mongo和/或Node中重新创建SQL Server代码
  • 在每个Mongo用户文档中添加一个新值来表示您正在使用的算法(可能是sha1

下次看到密码时,将用户转移到新算法

  • 当用户登录到您的新系统时,他们将提供密码,您可以根据算法列查找要执行的测试。
  • 如果他们成功登录并且他们有旧算法,则根据Bcrypt重新创建散列,然后将算法值更改为bcrypt

我将把提取哈希和盐的具体任务留给读者作为练习。无论如何,它看起来几乎都是在提供的链接中拼写出来的。

发布评论

评论列表 (0)

  1. 暂无评论