将用户 table(使用加密密码)移动到不同的应用程序

Moving users table (with encrypted passwords) to a different application

我目前在 rails 应用程序中有一个用户 table,其中密码使用 devise/ bcrypt 加密。

如何迁移这个 table 以用于另一个应用程序(反应 + 非 rails 后端)?我将无法使用现有的数据库。将需要为新应用复制新 table 中的数据。

是否可以/有权在新系统上使用相同的 bcrypt 加密逻辑,或者我是否必须让用户更改密码?

你很幸运;您使用的是 well defined 密码哈希(您真棒!)。它尚未正式标准化,但由于它被广泛使用和实施,因此不会造成重大问题。当然,今天有更好的替代方案,例如 scrypt 和 Argon2,但 bcrypt 可能就足够了——如果使用得当,工作因素设置得高,密码当然也足够安全。

因为它是标准化的并且非常常用,所以您很可能可以在大多数编程语言中找到实现。但是,如果您 运行 遇到问题,则更有可能是 因为编码问题 而不是其他原因。最重要的是,bcrypt 作用于 bytes 而不是密码。您应该对密码使用相同的字符编码(推荐使用 UTF-8)以确保您的实现兼容。确保在切换之前使用不常见的字符进行测试,并让相当一部分用户蒙在鼓里。