当前位置: 首页 > 编程笔记 >

如何给MD5加上salt随机盐值

林祯
2023-03-14
本文向大家介绍如何给MD5加上salt随机盐值,包括了如何给MD5加上salt随机盐值的使用技巧和注意事项,需要的朋友参考一下

如何加点盐(salt)?

为了加强MD5的安全性,从而加入了新的算法部分即加盐值,加盐值是随机生成的一组字符串,可以包括随机的大小写字母、数字、字符,位数可以根据要求而不一样,使用不同的加盐值产生的最终密文是不一样的:

     1).首先我们得到的是明文的hash值

     2).进行计算获取MD5明文hash值

     3).随机生成加盐值并插入

     4).MD5插入加盐值得到的hash

     5).得到最终的密文

看一个简单的加salt函数:

/**
 * MD5加SALT函数
 * by http://www.phpddt.com
 */
function do_hash($psw) {
  $salt = "fdsafagfdgv43532ju76jM"; //定义一个salt值,最好够长,或者随机
  return md5($psw . $salt); //返回加salt后的散列
}

注意:

如果你是随机生成salt值就得放入数据库,不要用time()时间戳啥的,那样别人不就可以枚举了嘛,如果你嫌麻烦,可以配置一个复杂的salt值,如上,两种方法各有优点。

另一种复杂点加密方法:

function PassCrypt($ManagerPassword)
{
$ManagerPassword=md5($ManagerPassword);
$Salt=substr($ManagerPassword,-1,3);
$ManagerPassword=crypt($ManagerPassword,$Salt);
Return $ManagerPassword;
}

这样先把密码用MD5加密,然后截取其结果的一段,再用crypt加密,因为这两个加密函数都是单向的,所以就没有人能破解的了了,而且加密后的最终密码是13位的,无论谁拿到手都不知道该怎么破解了,在密码验证时只需要将原始密码用加密函数再加密一编进行匹配就行了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

 类似资料:
  • 问题内容: 所以我正在尝试bcrypt。我有一类(如下所示,该类来自http://www.firedartstudios.com/articles/read/php- security-how-to-safe-store-your- passwords ),其中包含3个功能。第一个是生成随机的Salt,第二个是使用第一个生成的Salt生成哈希,最后一个是通过将提供的密码与哈希密码进行比较来验证所提

  • 问题内容: 我正在尝试在Java中生成盐,以与用于安全密码存储的哈希算法配合使用。我正在使用以下代码创建随机盐: 这应该生成一个完全安全的,随机生成的盐,以用于我的哈希算法。但是,当我运行代码时,每次都会输出相同的盐…表示生成的盐根本不是随机的。 出于明显的安全性目的,每个用户都需要一个唯一的符号,但是如果我每次创建一个新帐户时都使用此代码,则每个用户都将具有相同的符号,这一开始就破坏了它的用途。

  • 创建随机盐。 使用SALT加密密码。 保存用户的salt和加密密码。 我想要盐的大小,算法给出作为输入。 我想要解密的原因是,我有一些为应用程序创建的配置文件和一些值是密码,我想要保存为加密的文件和解密时,我想要使用它。 谁能提供一个适当的例子或如何使用它在我自己的方式?我想实现Jasypt在文章中提到的。但没有可用的代码。

  • 本文向大家介绍Springboot整合Shiro之加盐MD5加密的方法,包括了Springboot整合Shiro之加盐MD5加密的方法的使用技巧和注意事项,需要的朋友参考一下 1.自定义realm,在Shiro的配置类中加入以下bean 2.重写方法 需要注意的是SimpleAuthenticationInfo 类,我们需要把数据交给他,格式为(用户,用户密码,盐,当前Realm的类名) 3.你还

  • 问题内容: 我正在建立一个网站,并试图决定如何加密用户密码以将其存储在SQL数据库中。 我意识到使用简单的md5(password)是非常不安全的。我正在考虑使用sha512(password.salt),并且我一直在研究生成有用盐的最佳方法。我阅读了许多文章,指出盐应尽可能地随机以增加哈希值的熵,这似乎是个好主意。但: 您需要将随机盐与哈希一起存储 鉴于攻击者以某种方式可以访问您的哈希密码(并试

  • 问题内容: 我正在尝试创建一个Android应用程序,该应用程序将在给定范围内(但在它们之间 不 相等)生成一系列随机值(在这种情况下为整数),并在简单的TextView中显示它们 假设我们有范围 R = [1、2、3、4、5、6、7、8、9、10、11、12、13] 每次我按下 “生成” 按钮时,我想随机生成5个不同的结果 每个“生成”的示例: 4,9,2,12,10 5、1、6、8、13 10

  • 问题内容: 假设您要生成一个随机数,但希望它小于指定的数量。这可能吗? 问题答案: 文档位于:http : //docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt(int)