有没有一种简单的方法在Java中生成与“openssl passwd -1”生成的密码哈希值相同的格式?
示例:
示例:
# openssl passwd -1 test
$1$Gt24/BL6$E4ZsrluohHFxtcdqCH7jo.
我正在寻找一个纯Java的解决方案,不调用openssl或任何其他外部程序。
谢谢 Raffael
OpenSSL文档将-1
选项描述为:“使用基于MD5的BSD密码算法1。”
Jasypt是一个Java加密库,jBCrypt也是如此。 Jasypt略微复杂,但更具可配置性。
我对加密不是很了解,但我猜测由openssl生成的密码可以分解为:
$1$
- 指定使用MD5方案
Gt24/BL6
- 8字节盐
$
- 分隔符
E4ZsrluohHFxtcdqCH7jo.
- 哈希值
因此,看起来Jasypt的BasicPasswordEncryptor可能是您想要的-
也许像这样?
MessageDigest md = null;
md = MessageDigest.getInstance("SHA");
md.update(pPassword.getBytes("UTF-8"));
byte raw[] = md.digest();
String hash = BASE64Encoder.encodeBuffer(raw);
Java BASE64Encoder源代码可以在网络上找到。
$
不是有效的 Base64 代码。我认为这里发生了更多的事情,不仅仅是 Base64 编码。 - Alexander Pogrebnyak