python能否识别java中使用bcrypt的哈希密码?

8aqjt8rx  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(287)

我计划使用bcrypt散列用户密码,并将这些散列密码存储在数据库中。
处理用户帐户创建并将哈希密码插入数据库的服务器是用java编写的。
另一个需要访问用户信息(包括散列密码)的服务器是用python编写的。
我计划在java端使用jbcrypt,但在此之前,我想确保我能够从python端识别/使用这些散列密码。
从我的理解来看,只要pythonbcrypt实现与java实现相同,这应该没有问题。
那么,我可以使用python中使用jbcrypt散列的密码吗?怎样?
提前谢谢!

lrpiutwd

lrpiutwd1#

了解的最好方法是实际尝试。假设两种实现都是正确的,它们应该是兼容的,只要您注意根据需要重新编码数据。
通常,散列以原始散列的字节数组或ascii十六进制表示形式存储在内存中。要知道它使用的是什么编码,最好的方法是将它打印到控制台:如果它看起来像垃圾,它将是一个原始字节数组;如果它打印一个十六进制字符串(0-9和a-f),则它是ascii编码的十六进制。
盐可能会像土豆泥一样储存起来。轮数是一个整数。所有这些数据是否以通用格式存储取决于您。如果需要在python中将ascii十六进制字符串转换为字节数组(实际上是字符串),可以使用string.encode:

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

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

相关问题