在PHP中,Blowfish哈希的实现只是调用函数
string crypt(string $str [,string $salt])
并传递一个由“$2a$”、“$2x$”或“$2y$”(两位数)组成的适当的字符串 salt成本参数、“$”和 22 个字符 ( http://php.net/manual/en/function.crypt.php ) :
<?php
echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu04985'));
结果是:
$2a$10$7711cbpe58dfpogiu0498u5Vh773A3qx.3LE3ro3NX7F9c9N7.pOm
现在我需要将此实现移至 Java(或 Scala),并且不知道如何获得相同的结果...
附:我正在使用 Cipher.getInstance("Blowfish")
最佳答案
您可能想尝试jBcrypt图书馆:
public String crypt(String clearText) {
return BCrypt.hashpw(clearText, BCrypt.gensalt(10));
}
请注意,我使用 10 作为成本因子只是为了遵循您的示例代码,但 12 或更大会更好。
为了完整起见,以下是重现示例的方法:
String encrypted = BCrypt.hashpw("SAD123", "$2a$10$7711cbpe58dfpogiu04985");
// encrypted is $2a$10$7711cbpe58dfpogiu0498u5Vh773A3qx.3LE3ro3NX7F9c9N7.pOm
关于java - 在 Java 中使用自定义盐进行 Blowfish 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26400446/