标签: salt

如何使用 hash('sha256', $salt . $password) 创建 mySQL 用户?

我肯定错过了什么。

我想为仅选择事务设置一个数据库用户帐户,但 mysql 不允许我在创建用户帐户时选择密码的哈希方法。

这失败了:

GRANT SELECT ON myDB.* TO 'selectuser'@'localhost' 
IDENTIFIED BY hash('sha256', 'salted-myfakelongrandompasswordstring');
Run Code Online (Sandbox Code Playgroud)

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 'hash('sha256', 'salted-myfakelongrandompasswordstring')' 附近使用的正确语法

这通过了:

GRANT SELECT ON myDB.* TO 'selectuser'@'localhost' 
IDENTIFIED BY 'salted-myfakelongrandompasswordstring';
Run Code Online (Sandbox Code Playgroud)

我检查了 phpinfo 页面,sha256 哈希引擎已经启用。

有没有办法更改 mysql 的默认哈希算法,或者我的 SQL 语法是否不正确?

mysql passwords hash salt

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

盐和密码 - 前缀或后缀

这是一个关于需要散列的加盐短语的问题。

我想知道将盐放在短语前面或后缀是否更安全?盐+短语或短语+盐

我的问题来自MD5s上这篇文章的评论。我不确定我是否理解作者评论背后的推理。

security encryption passwords salt

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

如何使用从密码派生的密钥正确加密和解​​密文件

我正在尝试使用“PBEWithHmacSHA256AndAES_256”标准制定正确的过程来加密和解密文件。

从我从 Oracle 的这个示例代码中了解到。

我收集到需要一个盐,以及一个迭代计数和哈希标准。

所以我有我的主要方法,传入加密方法:

  1. 用户定义的密码new String(key).toCharArray()作为字节数组(使用此方法进行其他加密运行)
  2. initVector作为字节数组的安全随机 IV
  3. 纯文本文件inputFile作为字符串
  4. 要创建的密文文件的名称outputFile作为字符串

我已经按照代码示例编写了我认为对加密方法正确的内容。我通过将它们附加到密文来存储用于解密的盐和 IV。

private static void encrypt(byte[] key, byte[] initVector, String inputFile, String outputFile) //exceptions for throws... {
    //Initalisation for encryption
    Cipher cipher;

    byte[] salt = new byte[16];

        SecureRandom rand = new SecureRandom();

        // Salt randomly generated with base64
        rand.nextBytes(salt);
        System.out.println("my salt should be" + Base64.getEncoder().encodeToString(salt));
        salt = Base64.getEncoder().encode(salt);

        // Iteration count
        int count = 1000;

        IvParameterSpec iv = new …
Run Code Online (Sandbox Code Playgroud)

java encryption jce salt

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

在流上腌制C#MD5 ComputeHash

我看不出任何方法来加密MD5.ComputeHash(Stream).我错过了一些将字节注入HashAlgorithm的方法吗?

我在执行流计算之前尝试执行ComputeHash(byte []),但不出所料,它没有任何效果.任何想法(除了修改文件)?

谢谢你的时间.

附录 只是为了更具体一点,我想使用一个流来获取一个我不想加载到内存中的大文件的哈希值.

FileInfo myFI= new FileInfo("bigfile.dat");
FileStream myIFS = piFile.OpenRead();
MD5 md5 = MD5.Create();
byte[] hash = md5.ComputeHash ( myIFS );
myIFS.Close ();
Run Code Online (Sandbox Code Playgroud)

c# hash md5 stream salt

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

用户使用单个查询和每用户密码盐登录

我决定使用存储在数据库中的每用户盐实现用户登录.盐的前缀为密码,密码用SHA进行哈希处理并存储在数据库中.

在过去我没有使用salt时,我会使用典型的方法来计算查询返回的行数,使用用户输入的用户名和密码.但是,对于每用户salt,您需要先获取salt,然后才能将其与存储的密码哈希进行比较.

因此,为了避免有两个查询(1获取盐和另一个验证输入凭据),我决定根据输入的用户名在单个查询中获取salt和散列密码.就像是

SELECT users.salt, users.password
        FROM users   
        WHERE username = ?'
Run Code Online (Sandbox Code Playgroud)

然后在服务器端代码(PHP)中,我将salt与输入的密码连接起来,哈希并将其与已经从数据库中获取的密码进行比较.

如果不清楚,我想关键的区别在于,在后一种方法中,我在数据库中完成此操作之前检查PHP中的凭据.

在安全性或其他方面,这种方法是否有任何缺点

php mysql passwords login salt

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

hash(hash())vs salted hash

由于Rainbow表的引入,并且仅使用散列密码(例如:MD5)来存储数据库中的密码并不是最好的安全方式.

当人们谈论盐渍哈希时,总是以这种方式使用它hash(password . salt)甚至是hash(hash(password) . salt).

我不知道为什么要使用salt,并为每个密码添加额外的条目来存储盐?为什么我们不使用hash(hash(password)),甚至hash(hash(hash(password)))

放盐更安全吗?还是只是感觉更复杂?

security hash salt password-hash

3
推荐指数
3
解决办法
2304
查看次数

如何获取/设置JdbcRealm的salt

我试图使用Shiro JdbcRealm和SHA256 hashedcredentialsMatcher.我需要更新遗留数据库并为每个用户分配适当的盐(通过批处理例程).

如何使用Shiro框架获取/设置给定帐户的盐?

java salt jdbcrealm shiro

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

未提供所需的防伪标记或无效

@using (Html.BeginForm("Create", "Posts", FormMethod.Post, new { id = "publish" }))
{
    @Html.AntiForgeryToken("Posts/Create")
    <input type="text" id="url" name="url" />
    <input type="submit" value="@Html.Resource("Publish")" />
}

[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Create(string url)
{
    // stuff that's never reached
}
Run Code Online (Sandbox Code Playgroud)

在验证CSRF令牌时,我无法意识到这个简单形式的失败.我该怎么调试呢?

更新

如果我取出盐,它的作用; 奇怪的是它曾经与盐一起使用,我无法弄清楚为什么它不再存在.

salt csrf antiforgerytoken asp.net-mvc-3

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

Grails - Spring Security中相同盐的不同密码

我的网络应用程序使用Spring Security插件进行身份验证和授权.我正在构建一种API,我需要验证用户密码.

Spring Security配置为使用带有5个loground和BC username属性的BCrypt 作为salt:

grails.plugins.springsecurity.password.algorithm = 'brcypt' 
grails.plugins.springsecurity.password.bcrypt.logrounds = 5
grails.plugins.springsecurity.dao.reflectionSaltSourceProperty = 'username' // password salting
Run Code Online (Sandbox Code Playgroud)

现在,在我的控制器中,我想验证用户密码和登录.为此,我打电话springSecurityService.encodePassword(cmd.password, cmd.username)

cmd命令对象在哪里与我的参数.问题是,在每个请求中,编码的密码springSecurityService是不同的,并且与数据库中的用户密码不同.我也尝试在encodePassword调用中使用常量值,类似于: springSecurityService.encodePassword('foo', 'bar')结果是相同的:在每个请求上编码的密码是不同的.这样我无法验证用户密码并从数据库获取有效的用户实例.

任何想法如何解决这个问题?

passwords grails salt spring-security

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

PHP密码盐真的有必要吗?

我已经问了十几次这个问题.

密码盐真的有必要吗?

我找不到关于这个主题的任何好文献.

从安全角度来看,密码盐有帮助吗?如果数据库被破坏,如果密码是反正的话,盐是不是会丢失?

此外,从刷力的角度来看,如果我禁止IP,是否真的有理由储存盐?

php database passwords hash salt

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