有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Python能否识别Java中使用BCrypt的哈希密码?

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

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

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

我本来打算在Java端使用jBCrypt,但在此之前,我想确保能够从Python端识别/使用这些哈希密码

从我的理解来看,只要pythonbcrypt实现与Java实现相同,这应该没有问题

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

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

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

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

    盐可能会像土豆泥一样储存起来。轮数是一个整数。所有这些数据是否以通用格式存储取决于您。如果需要在python中将ascii十六进制字符串转换为字节数组(实际上是字符串),可以使用字符串。编码:

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

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