password安全之动态盐

首先,我们看看什么是盐:http://zh.wikipedia.org/zh/%E7%9B%90_%28%E5%AF%86%E7%A0%81%E5%AD%A6%29

通常情况下,当字段经过散列处理(如MD5),会生成一段散列值,而散列后的值通常是无法通过特定算法得到原始字段的。可是某些情况,比方一个大型的彩虹表,通过在表中搜索该MD5值,非常有可能在极短的时间内找到该散列值相应的真实字段内容。

加盐后的散列值,能够极大的减少因为用户数据被盗而带来的password泄漏风险,即使通过彩虹表寻找到了散列后的数值所相应的原始内容,可是因为经过了加盐,插入的字符串扰乱了真正的password,使得获得真实password的概率大大减少。

可是非常多人没意识到的是静态盐仍然不够安全。因为静态盐要面临两种攻击:

1,基于特定的静态盐,能够生成特定的彩虹表.

2,对静态盐处理过的散列password,能够按出现频率进行排序,最常出现的散列password,相应的明文password必定还是那些111111、123456之类的。

因此,对于重要的账号password,我们须要採用动态盐来对password进行混淆。一个经常使用做法就是把账号名进行MD5之后,作为动态盐。则上述两种攻击将失效。

比方,username是wsq,相应的md5是4572381974328f9c作为动态盐,password是123456,加上动态盐之后为4572381974328f9c123456,再MD5是d16e970d6e5b95b9。则终于的计算结果是无法推測的(unguessable)

password安全之动态盐

时间: 2024-07-30 06:31:32

password安全之动态盐的相关文章

密码安全之动态盐

首先,我们看看什么是盐:http://zh.wikipedia.org/zh/%E7%9B%90_%28%E5%AF%86%E7%A0%81%E5%AD%A6%29 通常情况下,当字段经过散列处理(如MD5),会生成一段散列值,而散列后的值一般是无法通过特定算法得到原始字段的.但是某些情况,比如一个大型的彩虹表,通过在表中搜索该MD5值,很有可能在极短的时间内找到该散列值对应的真实字段内容. 加盐后的散列值,可以极大的降低由于用户数据被盗而带来的密码泄漏风险,即使通过彩虹表寻找到了散列后的数值所

ASP.net 关于TextBox的TextMode=“PassWord”时的动态赋值

1.在界面创建一个新的TBPwdTemp并设置TextMode=“SingleLine”,visible=“false”,将数据库密码值传给该TextBox: 2.然后分别用 this.TBPwd.Attributes.Add("value", this.TBPwdTemp.Text); this.TBPwdConfirm.Attributes.Add("value",this.TBPwdTemp.Text);将TBPwdtemp值传给密码控件: 然后运行后果然界面

(六)SSO之CAS框架扩展 改动CAS源代码实现与ESS动态password验证对接

题记: 偶尔的偶尔我们会听到这个站点的数据泄露了,那个站点的用户数据泄露了.让用户又一次改动登录password,所以,对于用户数据安全性越发的引起我们的重视了,尤其是一些保密性要求高的站点.更须要添加安全性了. 正文: 对于安全性问题.我们怎样解决呢? 解决方式: 1.避免sql注入问题. 2.用户登录password加密. 3.使用https安全訪问方式. 4.使用第三方设备.像银行一般使用的password口令. 5.... 前三种方案是比較常见的.这里主要说第四种解决方式,我们在前三种方

【Java编码准则】の #13使用散列函数保存password

明文保存password的程序在非常多方面easy造成password的泄漏.尽管用户输入的password一般时明文形式.可是应用程序必须保证password不是以明文形式存储的. 限制password泄漏危急的一个有效的方法是使用散列函数.它使得程序中能够间接的对用户输入的password和原来的password进行比較,而不须要保存明文或者对password进行解密后比較.这种方法使password泄漏的风险降到最低,同一时候没有引入其它缺点. [加密散列函数] 散列函数产生的值称为哈希值

国家商用password(五)基于SM2的软件授权码生成及校验

将公开密钥算法作为软件注冊算法的优点是Cracker非常难通过跟踪验证算法得到注冊机.以下.将介绍使用SM2国密算法进行软件注冊的方法. 生成授权码 选择SM2椭圆曲线參数(P,a,b,N,Gx,Gy) 用随机数发生器产生随机数r∈[1,n-1] 计算椭圆曲线点R=[r]G=(XR,YR) 计算哈希值h=SM3(username ∥ XR ∥ YR) 计算序列号s≡(r - h * d) mod N.当中d为私钥,N为G点的阶 将s和h一起作为用户的授权码 校验授权码 确定SM2椭圆曲线參数(P

mybatis入门篇3 ---- 动态sql,缓存,以及分页jar包的使用

首先我们来看一下动态sql,动态sql就是传递的参数不确定的时候,使用if,where,select,choose,set等标签,先来看一下 lib,rescources,以及utils里面文件不变,直接来看使用 直接看if跟where,if使用比较简单,就是if会有一个条件判断,如果条件满足,就会把if里面的sql语句块加入slq语句,where就是帮助我们加载一个where条件判断,并且会把拼接语句中的第一个and删除掉,接下来看一下例子 看一下UserMapper public inter

HTTP

HTTP概述 HTTP协议规定.一定是client開始建立通信的,也就是说请求一定是从client发出.server端响应请求,server端在没有接收到请求的时候是不会有响应的. HTTP的请求报文由下面几部分构成: 方法 URI 协议版本号 POST /form/entry HTTP/1.1 请求首部字段 Host :baidu.com Connection:keep-alive Content-Type:application/-- Content-Length:16 请求实体 name=

浅谈 PHP 中的多种加密技术及代码示例

信息加密技术的分类 单项散列加密技术(不可逆的加密) 属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数 MD5 string md5 ( string $str [, bool $raw_output = false ] ); //MD5加密,输入任意长度字符串返回一个唯一的32位字符 md5()为单向加密,没有逆向解密算法,但是还是可以对一些常见的字符串通过收集,枚举,碰撞等方法破解;所以为了让其破解起来更麻烦一些,所以我们一般加一点盐值(salt)并双

跟着杨中科循序渐进学习wpf(全)

第一季 C#编程基础 1.用C#编写一个10+20=?的小程序: public static voidMain(tring[] args) { int i1=10; int i2=20; int i3=i1+i2; Console.WriteLine(i3);           //也可用占位符来实现:Console.WriteLine("{0}+{1}={2}",i1,i2,i1+i2);在输出参数较多时候要用占位符 Console.ReadKey();