相关疑难解决方法(0)

bcrypt如何内置盐?

Coda Hale的文章"如何安全地存储密码"声称:

bcrypt内置了盐来防止彩虹表攻击.

他引用了这篇论文,其中说在OpenBSD的实现中bcrypt:

OpenBSD从arcfour(arc4random(3))密钥流生成128位bcrypt salt,并使用内核从设备时序收集的随机数据进行种子处理.

我不明白这是如何工作的.在我的盐概念中:

  • 每个存储的密码需要不同,因此必须为每个密码表生成一个单独的彩虹表
  • 它需要存储在某个地方以便它是可重复的:当用户尝试登录时,我们会尝试密码,重复我们最初存储密码时所做的相同的盐和哈希过程,并进行比较

当我使用带有bcrypt的Devise(一个Rails登录管理器)时,数据库中没有salt列,所以我很困惑.如果盐是随机的并且没有存储在任何地方,我们如何可靠地重复散列过程?

简而言之,bcrypt如何内置盐

security hash internals bcrypt

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

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

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

编辑

示例哈希:

$2a$10$KssILxWNR6k62B7yiX0GAe2Q7wwHlrzhF3LqtVvpyvHZf0MwvNfVu

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

编辑2

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

mysql hash storage types bcrypt

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

SHA512的散列字符串的长度是多少?

用sha512散列的字符串的长度是否始终相同?

如果是这样,它是什么?

hash sha512

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

[sql-Server]用什么数据类型来设置密码盐和哈希值以及长度是多少?

我通过使用我的密码生成salt和hash值,

string salt = CreateSalt(TxtPassword.Text.Length);
string hash = CreatePasswordHash(TxtPassword.Text, salt);

private static string CreateSalt(int size)
{
    //Generate a cryptographic random number.
    RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
    byte[] buff = new byte[size];
    rng.GetBytes(buff);

    // Return a Base64 string representation of the random number.
    return Convert.ToBase64String(buff);
}

private static string CreatePasswordHash(string pwd, string salt)
{
    string saltAndPwd = String.Concat(pwd, salt);
    string hashedPwd =
     FormsAuthentication.HashPasswordForStoringInConfigFile(
     saltAndPwd, "sha1");

    return hashedPwd;
}
Run Code Online (Sandbox Code Playgroud)

您建议在sql server中存储这些值的数据类型是什么?任何建议......

盐:9GsPWpFD

哈希:E778AF0DC5F2953A00B35B35D80F6262CDBB8567

passwords hash types sql-server-2005 salt

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

存储MD5哈希或NULL的最佳MySQL数据类型

我有一个PHP应用程序,它存储所有帐户,无论它们是否在一个表中是活动的.该表有一个名为"active"的列,它可以是NULL,表示该帐户处于活动状态,或者包含MD5哈希,这意味着该帐户处于非活动状态.

根据在mysql中有效存储md5哈希的最佳实践,如果列始终包含MD5哈希并且永远不为NULL,则首选BINARY(16),并且CHAR(32)是下一个最佳选择.由于我的大多数帐户都是活动的,因此大多数列值都是NULL,我最好使用不同的数据类型,如VARCHAR(32)?

php mysql md5

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

将MD5存储在数据库中时BINARY(16)和CHAR(32)之间的差异

基于各种建议,例如用于散列密码字段的数据类型和长度是多少?,我可以将md5存储为CHAR(32)或BINARY(16).但是当我使用BINARY(16)这样做时,存储的值与CHAR(32)存储结果的前16个字符以及结果的前16个字符相同SELECT MD5().后16个字符有什么意义,它们是否缺少二进制列,导致数据丢失?

CREATE  TABLE test (id INT NOT NULL AUTO_INCREMENT, value VARCHAR(6), md5_char CHAR(32) NOT NULL, md5_binary BINARY(16) NOT NULL, PRIMARY KEY (id)) ENGINE = InnoDB;
INSERT INTO test(value,md5_char,md5_binary) VALUES("one!",md5("one!"),md5("one!"));
INSERT INTO test(value,md5_char,md5_binary) VALUES("two%",md5("two%"),md5("two%"));
INSERT INTO test(value,md5_char,md5_binary) VALUES("three~",md5("three~"),md5("three~"));
SELECT value,md5(value),md5_char,md5_binary FROM test;
DROP TABLE test;

+--------+----------------------------------+----------------------------------+------------------+
| value  | md5(value)                       | md5_char                         | md5_binary       |
+--------+----------------------------------+----------------------------------+------------------+
| one!   | 633c8403325f1cf963809e6eb224d77e | 633c8403325f1cf963809e6eb224d77e | 633c8403325f1cf9 |
| two%   | 48bbec047b4451a2018e0f652807b7d0 | 48bbec047b4451a2018e0f652807b7d0 | 48bbec047b4451a2 |
| three~ …
Run Code Online (Sandbox Code Playgroud)

mysql sql binary md5

4
推荐指数
1
解决办法
8590
查看次数

使用PHP crypt()时,MySQL中的密码应该用于什么字段类型

使用PHP crypt()方法我有一个PHP脚本来存储MySQL数据库中的用户加密密码.你能告诉我应该使用哪种字段来存储加密数据吗?

谢谢

php mysql crypt

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

如何检查密码是否是散列 - PHP

我有一个用户类,可以进行一些简单的验证。我想使用 phpass 将所有密码存储为哈希值。但是,我不希望它成为 User 类的工作来设置哈希,这是其他一些函数的工作。因此,如果我有一个名为 setPassword 的简单函数,我如何确保密码是哈希值。is_binary 有用吗??我不是在这里比较散列,我只是想确保密码是散列。我只是想确保密码是一个哈希值。

例子:

class User
{
    private password = NULL;
    private $errors = array();

    public function setPassword($password)
    {
        // make sure password is a hash...pseudo code
        if (!password_is_hash($password))
        {
            $this->errors[] = 'Invalid password';
            return $this;
        }
        $this->password = $password;
        return $this;
    } 

    public function getPassword()
    {
        return $this->password;
    }
}
Run Code Online (Sandbox Code Playgroud)

php passwords validation hash

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