1

我打算使用bcrypt散列用户密码,并将这些散列密码存储在数据库中。

处理用户帐户创建并将散列密码插入数据库的服务器是用 Java 编写的。

另一个需要访问用户信息(包括散列密码)的服务器是用 Python 编写的。

我计划在 Java 端使用jBCrypt,但在我这样做之前,我想确保我能够从 Python 端识别/使用这些散列密码。

我怎么理解,这应该没问题,只要 Python BCrypt 的实现和 Java 的实现是一样的。

那么,我可以使用使用 Python 中的 jBCrypt 散列的密码吗?如何?

提前致谢!

4

1 回答 1

1

最好的了解方法是实际尝试。假设这两种实现都是正确的,它们应该是兼容的,只要您注意在必要时重新编码数据。

通常,散列以原始散列的字节数组或 ASCII 十六进制表示形式存储在内存中。知道它使用什么编码的最好方法是将它实际打印到控制台:如果它看起来像垃圾,它将是一个原始字节数组;如果它打印一个十六进制字符串(0-9 和 af),它是 ascii 编码的十六进制。

Salt可能会像哈希一样存储。轮数是整数。由您决定以通用格式存储所有这些数据。如果你需要在python中将一个ascii hex字符串转换为一个字节数组(实际上是一个字符串),你可以使用string.encode:

>>> 'hello world'.encode('hex')
'68656c6c6f20776f726c64'
>>> '68656c6c6f20776f726c64'.decode('hex')
'hello world'

对于 python 中的 bcrypt 实现,您可能想尝试py-bcrypt

于 2013-06-06T02:36:10.350 回答