java - Python 可以识别 Java 中使用 BCrypt 的哈希密码吗?

标签 java python cryptography bcrypt

我计划使用 bcrypt 对用户密码进行哈希处理,并将这些经过哈希处理的密码存储在数据库中。

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

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

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

按照我的理解,只要Python BCrypt 实现与Java 实现相同,这应该没问题。

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

提前致谢!

最佳答案

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

通常,哈希值以原始哈希值的字节数组或 ASCII 十六进制表示形式存储在内存中。了解它使用的编码的最佳方法是将其实际打印到控制台:如果它看起来像垃圾,它将是一个原始字节数组;如果它打印十六进制字符串(0-9 和 a-f),则它是 ascii 编码的十六进制。

盐可能会像散列一样存储。轮数是一个整数。您可以选择以通用格式存储所有这些数据。如果需要在python中将ascii十六进制字符串转换为字节数组(实际上是字符串),可以使用string.encode:

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

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

关于java - Python 可以识别 Java 中使用 BCrypt 的哈希密码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952704/

相关文章:

java - 如何在java中计算curve1174的加倍?

Java自定义树模型更新问题

java - JLabel HTML4 支持

python - BeautifulSoup 找不到属性

iphone - 将 RSA 公钥发送到 iphone 并使用它来加密

java - KeyGenerator 线程安全吗?

java - 在 Google App Engine 上使用 JPA 加载子实体

java - 线程中的异常 "main"java.lang.NumberFormatException :

Python:返回该月第三个星期四的下一次出现的日期

python - Python中的子类可以继承父类装饰器吗