标签: salt

盐渍算法强度

这三种方法制造盐有哪些优点/缺点?

$salt = md5($password);

$salt = sha1(md5($password));

$salt = generate_random_number();
Run Code Online (Sandbox Code Playgroud)

计算哈希:

$hash = sha1($salt + $password);
Run Code Online (Sandbox Code Playgroud)

php cryptography salt

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

使用数据哈希作为盐

我在想 - 使用哈希作为自身的盐有什么缺点吗?

例如hashAlgorithm(data + hashAlgorithm(data))

这可以防止查找表的使用,并且不需要在数据库中存储salt.如果攻击者无法访问源代码,他就无法获得算法,这会使暴力破解变得更加困难.

思考?(我有一种直觉,认为这很糟糕 - 但我想检查它是否真的如此,如果是,为什么.)

hash cryptography salt

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

关于腌制密码的另一个问题

我知道有很多关于salting密码的博客,文章和问题,但有一点我无法找到答案是:

如果我生成这样的密码哈希:

$salt = randomString
$password = $_POST['password'] 
hashedPassword = sha1($password.$salt)
Run Code Online (Sandbox Code Playgroud)

我有一张这样的桌子:

Users
user_id | hashedPassword | salt
Run Code Online (Sandbox Code Playgroud)

为什么攻击者难以识别此密码?难道他们不能只使用彩虹表,或蛮力来弄清楚盐,然后将盐附加到字典攻击中的每个单词?

php security passwords hash salt

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

在开源项目中存储密码

我准备把一个项目公开放在github上.在我的项目中,对于登录验证,我接受一个字符串并强烈键入它Password:

// Stripped down here on SO for brevity
public class Password
{
    private const string salt = "sealab2021";

    public Password(string password) 
    {
        this.saltedPasswordHash = new MD5Hash(password + this.salt).ToString();
    }

    public string SaltedHash { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

显然,如果盐是公众可见的,那盐就没用了.

其他人如何在开源项目中加密密码并保持盐密码安全隐藏?

盐是否存在于文件系统的某个位置并在应用程序启动时加载?看起来像是一个合理的解决方案,但如果我要实际使用github进行源代码控制,而不仅仅是在发布新版本时对github进行转储,那么该文件仍然可供公众访问.

security passwords salt

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

MD5密码两次

我知道MD5的安全性最近有问题,这就是很多人使用盐的原因(我根本不明白这一点)但是我想知道你是否想在php中轻松实现安全系统你能不能两次md5 ?

test> 098f6bcd4621d373cade4e832627b4f6>fb469d7ef430b0baf0cab6c436e70375

所以基本上:

$val = 'test';
$val = md5($val);
$val = md5($val);
Run Code Online (Sandbox Code Playgroud)

这会解决整个彩虹安全问题吗?有没有一个简单/ noob证明的方式在PHP中制作安全的数据库密码?

php security hash md5 salt

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

关于盐渍密码的问题

好的.比方说,我将密码的盐设置为"你好".有人不能只看源代码并发现盐吗?如果是这样,我该如何隐藏它?谢谢.

php mysql hash salt

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

Java和密码强随机数

我一直在使用Java的SecureRandom类来生成盐,以便以后加密和密码哈希(我为每个任务生成单独的盐).我一直在使用的代码如下:

//Init random number generator
secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(System.nanoTime());

//Create salts
secureRandom.nextBytes(bytAuthSalt);
secureRandom.nextBytes(bytEncryptionSalt);
Run Code Online (Sandbox Code Playgroud)

现在,一切都很顺利,直到我开始真正验证我得到的值.对于应用程序的几个连续执行,我的盐是:

[B@43d55dd8
[B@43d55b58
[B@43d55b50
[B@43bd0cc8
[B@43db0b08
[B@43bd0f50
Run Code Online (Sandbox Code Playgroud)

令我感到不安的是,这些数字似乎都是大致顺序的.在网上进行了一些搜索之后,我再次重复运行,而没有自己播种到相同的结果.

我唯一猜测可能导致这种情况的原因在于我正在为Android平台开发.我知道他们有自己的加密提供商,但我没有任何例外.有任何想法吗?

提前致谢.

java encryption android salt

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

有人可以解释如何进行密码哈希+盐析

我已经阅读了SO(以及我在谷歌试图查看之后在谷歌上发现的其他网站),在数据库中存储密码的正确安全方法是存储密码的散列+盐渍值.最重要的是,每个用户的盐应该是不同的,因此黑客即使拥有加密值也不会造成伤害.

我不太确定腌制的意思.根据我的理解,您对密码进行哈希处理,然后使用另一个哈希值(盐)并将这两个值组合在一起,以便检索原始密码的算法对于每个用户都是不同的.

所以基本上,我需要做的是散列密码,然后对每个用户使用不同的哈希值(即:用户名或电子邮件地址)然后我可以对这两个值进行简单的数学运算获取编码密码.

这是正确的还是我对密码散列+腌制没有任何了解?

一个简单的解释或示例将被证明是有用的,因为我发现的网站并不能清楚地解释密码是什么.

编辑:在阅读到目前为止留下的评论和答案后,我明白我并不真正理解盐是什么,因为我错过了一些关键概念而我做出了错误的假设.

我想知道的是:如果随机生成,你如何始终获得相同的盐?如果像某些人提到的那样将盐存储在数据库中,那么我可以看到你如何继续获得相同的盐,但这带来了另一个问题:如果有权访问数据库的任何人都可以访问密码,那么它如何使密码更安全盐?难道他们不能只将(已知的)盐附加到他们尝试的所有密码上,结果会相同(有些小的时间损失)而不是没有一个吗?

sql security hash salt

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

多个盐保护密码

如果在散列密码之前使用salt,它将使散列更安全.这是有道理的,因为彩虹表攻击变得更加困难(不可能?).

如果你使用多种盐怎么办?例如 - 您检查日期是星期一,还是月份,小时等(或某种组合).然后你有一个存储字段的数据库:(userid,hash1,hash2,hash3 ......).

这会使信息更加(或更少)安全吗?

例:

1)用户注册密码为"PASS".2)系统(本例中为php)存储每天的值(md5($ password.$ this_day))(7个密码).到表密码,列hash_monday,hash_tuesday等.3)用户登录,脚本检查密码'hash _'.$ this_day匹配输入的内容.

security passwords hash salt

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

SHA2中有多少熵(RAND(),256)?

熵的位数是多少

SELECT SHA2(RAND(), 256);
Run Code Online (Sandbox Code Playgroud)

生成?

(实际问题:这是为密码生成随机盐的合理方法吗?)

mysql security passwords salt sha256

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

标签 统计

salt ×10

hash ×6

security ×6

passwords ×4

php ×4

cryptography ×2

mysql ×2

android ×1

encryption ×1

java ×1

md5 ×1

sha256 ×1

sql ×1