【问题标题】:Java website to Rails, reproducing password encryptionJava网站到Rails,重现密码加密
【发布时间】:2012-09-11 19:36:58
【问题描述】:

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

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

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

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

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

谢谢

【问题讨论】:

  • 您想了解如何在 Rails 上执行此操作,或者您想将数据移植到 Rails?这两个有点不同,所以请澄清一下(它看起来像一个学习项目,所以它似乎倾向于前者)。
  • 我通常喜欢学习一些东西,但这已经超出了学习水平,因此最重要的事情就是移植数据。希望我解释清楚,谢谢。
  • 你是对的。我认为所选的解决方案应该涵盖您。我发表评论的原因是,通常在 Rails 世界中,会使用 devise 之类的东西,所以如果你想维护功能(但不是当前的基础),你应该调查一下。
  • 为了将来的参考,我补充说我创建了这个gist.github.com/3759053,它非常基本,但可以工作。再次感谢。

标签: java ruby-on-rails encryption hash passwords


【解决方案1】:

BasicPasswordEncryptor 执行以下操作

a) 将密码转换为字节数组 b) 它创建一个随机的 8 字节盐 c) 它用盐通过 md5 传递 1000 次输入 d) 它得到 MD5 结果 - 16 字节 e)它添加到这个结果盐 - 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 中完成相同的操作(生成新的摘要密码或检查旧的摘要密码)。

没有办法从摘要中恢复原始密码(这就是摘要的重点)。

【讨论】:

  • 谢谢,这可能是我最终要做的。
猜你喜欢
  • 1970-01-01
  • 2010-09-30
  • 2014-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多