Java网站到Rails,复制密码加密

标签 java ruby-on-rails encryption hash passwords

前一段时间我想玩一下 Google Appengine,我制作了一个 java 网站。现在我需要摆脱它,我想迁移到 Rails,网站本身不是问题,但在我使用的 Java 版本中 BasicPasswordEncryptor加密我的密码。

现在我不知道如何在 Ruby 上获得相同的哈希值。文档说它是 md5 加密,但哈希值看起来像

4+RZ+7Vn/ddlNv4rdJeeg.....

所有哈希值都是 32 个字符长,但它看起来确实不像 MD5 哈希值。我也不明白盐储存在哪里。

有人有任何信息可以帮助解决这个问题吗?

谢谢

最佳答案

BasicPasswordEncryptor 执行以下操作

a) 将密码转换为字节数组 b) 它创建一个随机的 8 字节盐 c) 通过带盐的 md5 传递 1000 次输入 d) 得到 MD5 结果 - 16 字节 e) 它添加到这个结果 salt - 8 个字节 f) 它使用 base64 编码 24 个字节(MD5 和 salt),据我了解,最终将是 32 个字节。

您可以在这里查看源代码: http://grepcode.com/file/repo1.maven.org/maven2/org.jasypt/jasypt/1.5/org/jasypt/util/password/BasicPasswordEncryptor.java http://grepcode.com/file/repo1.maven.org/maven2/org.jasypt/jasypt/1.5/org/jasypt/digest/StandardByteDigester.java#StandardByteDigester.digest%28byte%5B%5D%29

因此,您需要在 Rails 中完成相同的操作(生成新的摘要密码或检查旧的摘要密码)。

无法从摘要中恢复原始密码(这就是摘要的全部意义)。

关于Java网站到Rails,复制密码加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495649/

相关文章:

ruby-on-rails - 如何处理 ActiveModel 的翻译?

ruby-on-rails - 如何在没有关联数据库表的情况下 RSpec 共享 ActiveRecord 模块?

java - Windows上使用openssl C++的RSA加密/解密错误

c# - RSA:在 javascript 中加密密码但无法在 C# 中解密

java - 如何检查字符串是否为数字?

java - 如何使用 -Dmaven.test.skip 控制 Maven Jetty 插件的执行

java - 这个Java线程什么时候停止

java - System.getProperty ("os.name") 在最新的 Windows 操作系统中返回什么

javascript - 使用 Rails 中上一页的数据预填充表单字段

c# - 如何在.Net 中与 PKCS #11 兼容的 HSM 设备连接?