相关疑难解决方法(0)

为哈希隐藏盐的必要性

在工作中,我们有两种相互竞争的盐理论.我工作的产品使用类似用户名或电话号码来加密哈希值.基本上每个用户都有不同的东西,但我们可以随时使用.另一个产品为每个用户随机生成一个salt,并在每次用户更改密码时更改.然后在数据库中加密盐.

My question is if the second approach is really necessary? I can understand from a purely theoretical perspective that it is more secure than the first approach, but what about from a practicality point of view. Right now to authenticate a user, the salt must be unencrypted and applied to the login information.

在考虑之后,我只是没有从这种方法中看到真正的安全性收益.将盐从帐户更改为帐户,即使攻击者知道如何快速确定每个帐户的内容,仍然会使某人尝试强制执行散列算法变得非常困难.这是基于密码足够强的假设.(显然,找到一组密码的正确哈希值,它们都是两位数,比找到8位密码的正确哈希值要容易得多).我的逻辑是不正确的,还是我缺少的东西?

编辑:好的,所以这就是为什么我认为加密盐真的没有意义.(lemme知道我是否在正确的轨道上).

对于以下说明,我们假设密码总是8个字符,盐是5,所有密码都由小写字母组成(它只是使数学更容易).

Having a different salt for each entry means that I can't use the same rainbow table (actually technically I could if I …

security encryption hash brute-force

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

为什么我们使用"盐"来保护我们的密码?

我正在阅读本教程,我遇到了以下关于加密的讨论.最后写了

在最后一行中,我们使用密码对盐进行了哈希处理,产生了一个几乎无法破解的加密密码

但在我看来,一个拥有encrypted_passwordsalt可以做"彩虹"技巧的黑客就像我们使用的那样salt.

那么,我哪里错了?

谢谢!

$ rails console
>> require 'digest'
>> def secure_hash(string)
>>   Digest::SHA2.hexdigest(string)
>> end
=> nil
>> password = "secret"
=> "secret"
>> encrypted_password = secure_hash(password)
=> "2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b"
>> submitted_password = "secret"
=> "secret"
>> encrypted_password == secure_hash(submitted_password)
=> true
Run Code Online (Sandbox Code Playgroud)

这里我们定义了一个名为secure_hash的函数,它使用一个名为SHA2的加密哈希函数,它是SHA系列哈希函数的一部分,我们通过摘要库将它们包含在Ruby中.7确切地知道这些哈希函数是如何工作的并不重要.为了我们的目的,重要的是它们是单向的:没有计算上易于理解的方法来发现它

2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b是字符串"secret"的SHA2哈希值.

但是,如果你考虑一下,我们仍然有一个问题:如果攻击者掌握了哈希密码,他仍然有机会发现原件.例如,他猜测我们使用了SHA2,因此编写一个程序来将给定的哈希与潜在密码的哈希值进行比较:

>> hash = "2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b"
>> secure_hash("secede") == hash
=> false
>> secure_hash("second") == hash
=> false
>> secure_hash("secret") == hash
=> true
Run Code Online (Sandbox Code Playgroud)

所以我们的攻击者对任何密码为"secret"的用户都有一个匹配 - 坏消息.这种技术被称为彩虹攻击. …

encryption

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

你如何在MySQL中安全地存储用户的密码和盐?

所以,我发现你应该将密码与"盐"一起散列.(文章可以在这里这里找到.)

这是代码:

$password = 'fish';

/* should be "unique" for every user? */
$salt= 'ABC09';

$site_key = 'static_site_key';

hash_hmac('sha1', $password . $salt, $site_key);
Run Code Online (Sandbox Code Playgroud)

现在我需要的方法来保存$password$saltMySQL中,就像这样:

+---------+--------+----------+-------+
| user_id |  name  | password |  salt |
+---------+--------+----------+-------+
|    1    | krysis |  fish**  | ABC09 |
+---------+--------+----------+-------+
Run Code Online (Sandbox Code Playgroud)

**fish当然会被散列,而不是以纯文本形式存储.

而我只是想知道这样做是否真的有意义,因为这样一个黑客或谁也知道盐?所以,如果他们破解密码并且看到fishABC09它们,他们会自动知道密码是fish什么?或者他可能"永远"无法破解密码,因为他不知道密码secret_key,因为它没有存储在数据库中?

如果我没有任何意义,我很抱歉.我只是一直用于sha1密码,今天我发现这些文章谈到了添加一个salt.

mysql passwords sha1

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

在VB.NET中使用MD5哈希

所以,我在这里遇到了一个问题,我有一个数据库,一个登录和一个注册,所有在不同的类,现在我需要在数据库中哈希密码并在登录时再次读出它,但我不知道我知道如何处理这个问题,我已经搜索了很多,但找不到任何有用的东西.

这是我的登录类

Imports System.Data

Imports System.Data.SqlClient

Imports System.Data.SqlServerCe

Public Class Login

    Inherits System.Web.UI.Page


    Private Sub LSend_Click(sender As Object, e As System.EventArgs) Handles LSend.Click

        If Bibliothek.EntryExists(LNAME.Text, "Username") = False Then
            LNAMELBL.Text = "Name oder Passwort Falsch."
            Exit Sub
        End If

        If Bibliothek.EntryExists(LPW.Text, "Passwort") = False Then
            LNAMELBL.Text = "Name oder Passwort Falsch."
            Exit Sub
        End If
        Dim UserN As String = LNAME.Text
        Session("Admin") = Bibliothek.GetValueBool(UserN, "IsAdmin")
        Session("USERNA") = Bibliothek.GetValueBool(UserN, "Username")

        Response.Redirect("/TSL/Home.aspx")
    End Sub
    Private Sub REG_Click(sender As Object, e As System.EventArgs) …
Run Code Online (Sandbox Code Playgroud)

vb.net hash md5

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

标签 统计

encryption ×2

hash ×2

brute-force ×1

md5 ×1

mysql ×1

passwords ×1

security ×1

sha1 ×1

vb.net ×1