标签: bcrypt

检查字符串是否为 bcrypt 哈希的最简单快捷的方法是什么?

我正在编写一个单元测试,说明应该使用 bcrypt 对用户密码进行散列。要断言这一点,我需要能够检查字符串是否看起来像 bcrypt 哈希。

我找不到一个函数来告诉我在字符串上使用了什么散列算法,除了正则表达式之类的方法之外,还有其他方法可以做到吗?

php hash phpunit bcrypt

7
推荐指数
1
解决办法
4626
查看次数

Docker-registry v2 带有 tls 和 nginx 身份验证错误背后的基本身份验证

简短:我无法使用 my.domain.ch 名称从外部(运行 MAC 的本地计算机)登录我的 docker-registry(托管在服务器中心的 ubuntu-vm (14.04LTS) 上)。

可以使用“docker login http://localhost:5000 ”从运行注册表的ubuntu-machine(vm-2)成功登录

这是我的设置:

vm-1:Ubuntu 14.04 上的 nginx/1.10.1 充当反向代理(此处未安装 docker):

upstream registry {
    server vm-2:5000 fail_timeout=5s;
}

server {
 listen 80;
 server_name my.domain.ch; # server_name ;
 return 301 https://$host$request_uri;
}

server {
 listen 443 ssl;
 server_name my.domain.ch; # server_name ;

 charset utf-8;
 keepalive_timeout 5;
 add_header Docker-Distribution-Api-Version registry/2.0 always;
 ssl_certificate         /etc/nginx/ssl/cert.pem;
 ssl_certificate_key     /etc/nginx/ssl/key.pem;

 ssl_ecdh_curve          secp521r1;

 ssl_protocols           TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers       on;
 ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCMSHA384:ECDHE-ECDSA-AES256-SHA384:EC$

 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header …
Run Code Online (Sandbox Code Playgroud)

nginx bcrypt ubuntu-14.04 docker-registry docker-compose

7
推荐指数
1
解决办法
1241
查看次数

bcrypt 密码建议进行多少轮?

我正在学习 Nodejs 背景下的传递哈希,我想知道你会推荐什么盐级别。默认级别是 10,我想知道这对于少于 10 个用户的基本应用程序来说是否足够好。

bcrypt node.js

7
推荐指数
2
解决办法
7251
查看次数

无论密码是什么,Bcrypt-NodeJS Compare() 都会返回 false

我知道这个问题已经被问过几次了(比如这里这里那里,甚至在Github上,但没有一个答案真正对我有用......

我正在尝试使用 Mongoose 和 Passport 为 NodeJS 应用程序开发身份验证,并使用 Bcrypt-NodeJS 来哈希用户的密码。

在我决定重构用户架构并使用 bcrypt 的异步方法之前,一切都正常运行。创建新用户时哈希仍然有效,但我现在无法根据存储在 MongoDB 中的哈希来验证密码。

我知道什么?

  1. bcrypt.compare()总是返回false无论密码正确与否,无论密码是什么(我尝试了几个字符串)。
  2. 在用户创建时,密码仅被散列一次(因此散列不会被重新散列)。
  3. 提供给比较方法的密码和哈希值是正确的,且顺序正确。
  4. 密码和哈希值的类型为“String”。
  5. 存储在数据库中时,哈希值不会被截断(60 个字符长的字符串)。
  6. 数据库中获取的哈希值与用户创建时存储的哈希值相同。

代码

用户模式

为了保持清晰,一些字段已被删除,但我保留了相关部分。

var userSchema = mongoose.Schema({

    // Local authentication
    password: {
        hash: {
            type: String,
            select: false
        },
        modified: {
            type: Date,
            default: Date.now
        }
    },

    // User data
    profile: {
        email: {
            type: String,
            required: true,
            unique: true
        }
    },

    // Dates
    lastSignedIn: { …
Run Code Online (Sandbox Code Playgroud)

bcrypt mongoose node.js

7
推荐指数
2
解决办法
1万
查看次数

NodeJs :- Getting "missing credentials" error while using local passport

I was trying to implement a functionality where a user can reset a password. I have tried the below code and while I am not getting any error, its not updating the password. The password is the same ie the old password.

my User model file is as follows:-

const mongoose = require('mongoose');
var passportLocalMongoose = require("passport-local-mongoose");

const LoginUserSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    unique: true,
    required: true
  },
  password: { …
Run Code Online (Sandbox Code Playgroud)

javascript bcrypt mongoose node.js passport.js

7
推荐指数
1
解决办法
758
查看次数

散列"记住我"cookie令牌的最佳方法

我正在尝试按照此处提供的指南实现" 记住我 "功能:基于表单的网站身份验证的权威指南,此处:http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/

看来,"cookie令牌"应该在存储在数据库中时进行哈希处理(如果攻击者可以访问数据库,则未使用的令牌看起来像普通的登录/密码,允许登录网站).

寻找一个好的哈希算法,我发现这个推荐的技术使用bcrypt:https://stackoverflow.com/a/6337021/488666

我已经尝试过,发现随着建议的轮数(15)导致处理时间非常慢(在2,3或者英特尔2核E500 + 4 GB RAM上验证2,3s)

我知道哈希算法应该相对缓慢阻碍攻击者,但在这个层面上,它阻碍了用户使用网站:)

你认为减少轮数(例如7,将处理时间减少到10ms + 10ms)就足够了吗?

php cookies hash bcrypt remember-me

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

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

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

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

security passwords ruby-on-rails bcrypt

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

与bcrypt Node.js模块的安全性差异

我的一个项目是将bcrypt模块用于散列秘密.少数人抱怨由于它的依赖性而难以安装.我曾尝试在Windows Server上安装它,它不是在公园散步.

人们要求我使用纯Javascript drop-in替换,例如dcodeIO/bcrypt.jsshaneGirish/bcrypt-nodejs.但我真的不知道使用它们的安全隐患.它们一样可靠吗?

bcrypt node.js

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

BCrypt vs Argon2 及其哈希算法

我在一家提供软件服务的初创公司工作,最近我们制定了加密安全标准。对于散列,设定的标准是我们应该使用 SHA-512 或 SHA-256。

对于Java,我们正在考虑使用Spring的Bcrypt或Argon2。实际上阅读他们的文档,如果他们的底层算法使用 SHA-512 或 SHA-256 或其他东西,找不到任何信息?

或者这些都是过时的哈希算法,我们应该使用其他算法吗?

谁可以帮我这个事?

hash spring-security bcrypt java-security argon2-ffi

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

2021 年存储密码的最佳方式是什么?

我存储密码,如果您是开发人员,那么以实际上最好的方式存储密码很容易。所以我想知道,2021年哪个最好?对我来说,调整我的代码以使其成为最好的代码很容易。

是的- 我研究并阅读了 Stack Overflow 和其他网站上的许多文章,所有这些文章都提供了最好的建议,并且我已经遵循了它,所以这个问题不会重复其他线程。


我目前所做的事情的高级概述:

  • 使用SSL
  • 使用 bcrypt 库
  • 使用密码强度库
  • 每次生成/存储随机的唯一盐
  • 存储为 SHA3_512

这是我从读过的所有文章和主题中“学到”的智慧。

但是,就在最近,有人告诉我,实际上上述内容在 2021 年应该被认为是不安全的。虽然这个有很好的资格,但我仍然对在对话中进行任何安全更改保持警惕,而且我不是安全专家,所以我之前想我做出改变然后我必须测试它。

而且,我想不出比 Stack Overflow 更好的地方了,我知道如果它值得的话,它会立即被切成碎片!我不是安全专家,但我问这个问题听起来很可信。

所以我带着一些惶恐的样子问,并跟随一些我相信的白痴,以下......是的,我问这个不是其他人。请找出我所提出的逻辑,然后我向您展示......哎呀!:

  • 如果Users您的数据库表已被泄露,那么您存储的 SALT 也已被泄露(从我所读到的内容来看,这是普遍接受的)
  • 黑客/密码破解工具非常复杂、成熟并且快速发展/适应。
  • 标准的“黑客”密码数据库拥有超过 7 亿个已使用的明文密码,他们的软件创建了巧妙的变体,可以快速访问数十亿种可能的可能性。
  • 标准黑客软件已经从现有受损数据库的现有字段中获取 bcrypt 和 PBKDF 衍生品的“盐”输入,因此意味着 SALT 变得无关紧要。实际上,它成为现有工具的命令行选项,它简单地描述了算法以及哪个字段是“盐”。
  • 此外,这些工具现在非常复杂,它们可以快速检查具有不同“成本”值、不同 SHA 摘要排列的前 x% 密码,以确定和分析开发人员使用的实际组合(如果他们不知道)。
  • 因此,这些“最新工具”非常聪明,可以使用已知的盐来尝试大量常用技术,并针对选择的“可能目标”来实际确定您是否使用了 SHA1/2/3 或长度和其他内容我真的不明白。但他们不再愚蠢,实际上他们非常非常聪明。
  • 这些“工具”已经存在,并且它们相对容易使用大量命令行选项,因此它们非常容易访问,这极大地拓宽了攻击向量。

因此,使用bcrypt 或类似工具生成随机 SALT更加安全,因为工具已经发展到了这一点。盐实际上不再有任何区别,正如基本上所预期的那样。

问题 1: 以上情况是否属实? (我个人完全不知道)

显然,推荐的 2021 年解决方案如下:

  1. 不要依赖现有加密方法的内置盐功能。
  2. 是的,利用现有的盐功能,但这不足以作为标准。
  3. 您必须创建自己的附加 SALTS,以阻止现有的主流工具。
  4. 您必须创建 2 个额外且单独的 SALTS,存储在 …

security encryption passwords hash bcrypt

6
推荐指数
2
解决办法
5241
查看次数