我想在 php 中创建注册页面,并使用 bcrypt 散列密码并放入数据库。
我还想用Java制作一个登录系统,并使用jbcrypt以相同的密码获取密码。
如何使用相同的盐使 php 中的 jbcrypt 和 bcrypt 兼容。
可能是一个非常愚蠢的问题,但我无法将 mindrot.org https://www.mindrot.org/projects/jBCrypt/中的jbcrypt 添加到我现有的 android studios 应用程序中。
在查看了原始jBCrypt v0.1 C#端口中的一个错误:BCrypt.net(相关问题).我决定将新的jBCrypt代码与旧的C#端口进行比较,以查找差异和潜在问题,如相关问题的错误.
这是我发现的:
// original java (jBCrypt v0.3):
private static int streamtoword(byte data[], int offp[]) {
int i;
int word = 0;
int off = offp[0];
for (i = 0; i < 4; i++) {
word = (word << 8) | (data[off] & 0xff);
off = (off + 1) % data.length;
}
offp[0] = off;
return word;
}
// port to C# :
private static uint StreamToWord(byte[] data, ref int offset)
{
uint word = …Run Code Online (Sandbox Code Playgroud) 自从2010年问世以来,我一直在使用jBCrypt版本0.3开箱即用.我使用默认的getalt()方法将"log_rounds"的数量设置为10.鉴于密码破解硬件的进展和方法,这个值仍然适合作为默认值,或者我应该看一些更高的值.
来自javadoc的信息......
String pw_hash = BCrypt_v03.hashpw(plain_password, BCrypt_v03.gensalt());
String strong_salt = BCrypt_v03.gensalt(10)
String stronger_salt = BCrypt_v03.gensalt(12)
Run Code Online (Sandbox Code Playgroud)
工作量呈指数增长(2**log_rounds),因此每个增量是工作量的两倍.默认log_rounds为10,有效范围为4到31.
我搜索了 Spring 5 Security 的文档,但在$2y$任何地方都找不到对 BCrypt版本前缀的引用。
但是,在查看源代码时,我在以下的Javadoc 中PasswordEncoder找到了一个参考:
可以选择提供“版本”($2a、$2b、$2y)
谁能给我一些共识?$2y$使用 Spring 5 Security 时是否可以使用bcrypt 版本前缀?