相关疑难解决方法(0)

我应该使用什么列类型/长度在数据库中存储Bcrypt哈希密码?

我想在数据库中存储散列密码(使用BCrypt).什么是好的类型,哪个是正确的长度?密码是否与BCrypt长度相同?

编辑

示例哈希:

$2a$10$KssILxWNR6k62B7yiX0GAe2Q7wwHlrzhF3LqtVvpyvHZf0MwvNfVu

在对一些密码进行哈希处理之后,似乎BCrypt总是生成60个字符的哈希值.

编辑2

很抱歉没有提及实施.我正在使用jBCrypt.

mysql hash storage types bcrypt

295
推荐指数
4
解决办法
12万
查看次数

"双重哈希"密码是否比仅仅哈希一次更安全?

在存储之前对密码进行两次哈希处理的安全性是否比仅仅哈希一次更安全?

我在说什么是这样做的:

$hashed_password = hash(hash($plaintext_password));
Run Code Online (Sandbox Code Playgroud)

而不仅仅是这个:

$hashed_password = hash($plaintext_password);
Run Code Online (Sandbox Code Playgroud)

如果它不太安全,你能提供一个很好的解释(或链接到一个)吗?

此外,使用的哈希函数是否有所作为?如果混合使用md5和sha1(例如)而不是重复相同的散列函数,它会有什么不同吗?

注1:当我说"双重哈希"时,我正在谈论两次哈希密码以试图使其更加模糊.我不是在谈论解决碰撞技术.

注2:我知道我需要添加一个随机盐来真正使其安全.问题是使用相同算法进行两次散列是否有助于或损害散列.

security passwords hash cryptography password-hash

287
推荐指数
5
解决办法
7万
查看次数

用于散列密码字段的数据类型和长度是多少?

我不确定密码哈希是如何工作的(将在以后实现),但现在需要创建数据库模式.

我正在考虑将密码限制为4-20个字符,但据我所知,加密后的哈希字符串将具有不同的长度.

那么,如何将这些密码存储在数据库中?

mysql passwords hash types cryptography

258
推荐指数
7
解决办法
30万
查看次数

Golang中的Bcrypt密码散列(与Node.js兼容)?

我建立了一个带有Node.js + passport的站点,用于用户身份验证.

现在我需要迁移到Golang,并且需要使用db中保存的用户密码进行身份验证.

Node.js加密代码是:

    var bcrypt = require('bcrypt');

    bcrypt.genSalt(10, function(err, salt) {
        if(err) return next(err);

        bcrypt.hash(user.password, salt, function(err, hash) {
            if(err) return next(err);
            user.password = hash;
            next();
        });
    });
Run Code Online (Sandbox Code Playgroud)

如何使用Golang与Node.js bcrypt创建相同的散列字符串?

go bcrypt node.js

56
推荐指数
2
解决办法
3万
查看次数

什么是Rails/Devise会话中的监听数据?

Rails会话中的"数据"如下所示:

{"warden.user.user.key" => [[1], "long-random-string"]}
Run Code Online (Sandbox Code Playgroud)

1是用户ID.什么是长随机字符串?

这是由Rails或Devise处理/使用的东西吗?

ruby-on-rails devise warden

20
推荐指数
1
解决办法
6003
查看次数

Spring BCryptPasswordEncoder为相同的输入生成不同的密码

我正在使用带有Spring安全性的BCryptPasswordEncoder.但问题是它为同一输入生成不同的编码密码.

String password = "123456"; 
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); 
String encodedPassword = passwordEncoder.encode(password);
System.out.print(encodedPassword);
Run Code Online (Sandbox Code Playgroud)

每次产生不同的输出.

java spring spring-security bcrypt

19
推荐指数
4
解决办法
4万
查看次数

盐如何在Rails的has_secure_password中工作

根据我从盐析中理解的更加安全的加密密码,我会生成一个随机数(盐)并将其与散列密码一起存储在用户记录中(例如).我会将盐与明文连接起来密码,然后加密(哈希).产生的哈希将难以破解.将重复此过程以验证密码.

看看has_secure_passwordbcrypt_ruby(披露:我不是安全专家)我不知道如何做到这一点,因为用户记录中存储的唯一内容是哈希密码.盐在哪里?

ruby security ruby-on-rails salt

13
推荐指数
1
解决办法
7031
查看次数

Rails has_secure_password更改BCrypt成本因子(又称工作因子)

在rails中使用has_secure密码时,如何在创建密码摘要时更改BCrypt使用的默认成本因素?

我想这样做是因为所使用的默认成本因数-10-显然有点低(本文建议至少将其设置为12)。

security passwords ruby-on-rails bcrypt

6
推荐指数
1
解决办法
1160
查看次数

Laravel - 你如何使用Hash :: needsRehash()?

我想知道如何使用,Hash::needsRehash()因为我正在努力看到使用文档的确切内容.

if (Hash::needsRehash($hashed)) {
    $hashed = Hash::make('plain-text');
}
Run Code Online (Sandbox Code Playgroud)

究竟是什么原因导致Hash::needsRehash()返回true或false,如果散列密码在另一个散列(例如MD5,SHA1等)中,它是否返回true?

如果您的数据库在另一个算法中充满了哈希值并Hash::needsRehash()返回true,那么您将如何重新设置用户密码以使它们是最新的?你不能依赖"登录"密码,因为它需要先进行比较才能验证,对吧?

我想也许我在思考问题,但我现在很困惑.幸运的是我的用户密码仍在使用password_hash(),所以不应该是一个问题.

php authentication hash laravel

6
推荐指数
1
解决办法
2783
查看次数

比较两个密码哈希 - nodejs

我使用加密https://nodejs.org/api/crypto.html进行密码加密和身份验证.我正在处理更改密码页面,并且在确定用户提供的密码是否具有与现有密码相同的哈希值时遇到问题.以下是我的代码.

var createSalt = function createSalt() {
    return crypto.randomBytes(128).toString('base64');
};

var hashPwd = function hashPwd(salt, pwd) {
    var hmac = crypto.createHmac('sha256', salt);
    return hmac.update(pwd).digest('hex');
};

//use password , create salt, hash and compare with the existing
var salt = createSalt();
var passHash = hashPwd(salt,data.Password);
console.log('the password is', user.PassHash === passHash);
Run Code Online (Sandbox Code Playgroud)

我期待上面的控制台消息在现有用户密码匹配时打印为true.但是,这两个哈希似乎根本不匹配.请问我错过了什么?怎么做到这一点?我想确保用户密码与他现有的密码匹配后才能更改新密码.任何帮助,将不胜感激.

hash cryptography node.js

5
推荐指数
1
解决办法
8072
查看次数