0

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

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

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

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

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

谢谢

4

1 回答 1

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 中完成相同的操作(生成新的摘要密码或检查旧的摘要密码)。

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

于 2012-09-19T23:05:18.053 回答