加密撒盐
1. ASP.NET实现对输入的密码用MD5+盐,并加密
public partial class _Default : System.Web.UI.Page
{
public bool IsMd5
{
get
{
//添加命名空间 using System.Configuration;
return ConfigurationManager.AppSettings["Md5"] == "1";
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsMd5)
{
//添加命名空间 using System.Web.Security;
string MD5 = FormsAuthentication.("被加密的字段", "MD5"); // SHA1 MD5
}
}
}
---------------------web.config----------------------------------
<appSettings>
<!--加密, 1:代表是; 0:代表不是-->
<add key="Md5" value="1"/>
</appSettings>
2. 什么是哈希算法
就是空间映射函数,例如,全体的长整数的取值作为一个取值空间,映射到全部的字节整数的取值的空间,这个映射函数就是HASH函数。通常这种映射函数是从一个非常大的取值空间映射到一个非常小的取值空间,由于不是一对一的映射,HASH函数转换后不可逆,即不可能通过逆操作和HASH值还原出原始的值,受到计算能力限制(注意,不是逻辑上不可能,前面的不可能是逻辑上的)而且也无法还原出所有可能的全部原始值。HASH函数运用在字典表等需要快速查找的数据结构中,他的计算复杂度几乎是O(1),不会随着数据量增加而增加。另外一种用途就是文件签名,文件内容很多,将文件内容通过HASH函数处理后得到一个HASH值,验证这个文件是否被修改过,只需要把文件内容用同样的HASH函数处理后得到HASH值再比对和文件一起传送的HASH值即可,如不公开HASH算法,那么信道是无法篡改文件内容的时候篡改文件HASH值,一般应用的时候,HASH算法是公开的,这时候会用一个非对称加密算法加密一下这个HASH值,这样即便能够计算HASH值,但没有加密密钥依然无法篡改加密后HASH值。这种算法用途很广泛,用在电子签名中。HASH算法也可进行破解,这种破解不是传统意义上的解密,而是按照已有的HASH值构造出能够计算出相同HASH值的其他原文,从而妨碍原文的不可篡改性的验证,俗称找碰撞。这种碰撞对现有的电子签名危害并不严重,主要是要能够构造出有意义的原文才有价值,否则就是构造了一个完全不可识别的原文罢了,接收系统要么无法处理报错,要么人工处理的时候发现完全不可读。理论上我们终于找到了在可计算时间内发现碰撞的算法,推算了HASH算法的逆操作的时间复杂度大概的范围。HASH算法的另外一个很广泛的用途,就是很多程序员都会使用的在数据库中保存用户密码的算法,通常不会直接保存用户密码(这样DBA就能看到用户密码啦,好危险啊),而是保存密码的HASH值,验证的时候,用相同的HASH函数计算用户输入的密码得到计算HASH值然后比对数据库中存储的HASH值是否一致,从而完成验证。由于用户的密码的一样的可能性是很高的,防止DBA猜测用户密码,我们还会用一种俗称“撒盐”的过程,就是计算密码的HASH值之前,把密码和另外一个会比较发散的数据拼接,通常我们会用用户创建时间的毫秒部分。这样计算的HASH值不大会都是一样的,会很发散。最后,作为一个老程序员,我会把用户的HASH值保存好,然后把我自己密码的HASH值保存到数据库里面,然后用我自己的密码和其他用户的用户名去登录,然后再改回来解决我看不到用户密码而又要“偷窥”用户的需要。最大的好处是,数据库泄露后,得到用户数据库的黑客看着一大堆HASH值会翻白眼。
3. 关于加密软件truecrypt的一些问题
TrueCrypt是着名的开源加密软件,采用aes算法加密,可以加密整个硬盘,硬盘分区,虚拟文件为分区,nod32最新升级ID,光盘,u盘等.软件加密速度快,在很多电脑上超过硬盘读写速度,占用系统资源小,感觉不到存在,加密强度高,用Hash算法都是重复2000次.加密安全问题如下:
加密方法:
由于TrueCrypt加密后信息并没有记忆采用何种算法,TrueCrypt只能在解密时,用输入的密码对每种算法穷举直到解密.当*** 者知道对称加密的算法时,可以通过电脑运算把各个密码加密指定信息的密文存储在类似数据库存储介质上,需要解密时,nod32免费,只要检索数据库,很快就可以找到密码,网上就有这样的md5解密数据库.对称密码 *** 只要找到指定信息的密文就可以了.但TrueCrypt在加密时采用撒盐的加密因子,使得 *** 中无法通过空间换时间的 *** 方法无效.
加密后网上流传窃取密码方法与防范方法:
一种方法是,使用间谍程序在TrueCrypt启动之前启动,记录密码.这种方法在网上一篇名为《邪恶女佣破除硬盘全局加密》中有详细介绍.对付这种间谍程序,可用如下方法.电脑加cmos开机密码防止物理上接触电脑.修改启动屏幕的自定义信息,如果和原先不一样,说明加载区被修改过.进入系统后用软件比较引导区,这些可以解决这个问题.
另一种是,献身门,开机后在内存中读取,包括软件读取和冷冻内存技术.可以看到网上有《最新研究显示冷冻内存即可 *** 加密资料》这个文章.冷冻内存只要保证电脑的人走关机就没事,不要处于待机状况就可以了,如果采用加密内存条就没有这方面的问题,目前也只是传说可以 *** ,不实用.软件读取目前只能用防火墙来挡.在驱动内存中缓存密码,使用类似防火墙功能的软件防止直接访问这块物理内存,除了TrueCrypt,其实只要做好反间谍软件就没什么问题.以后要能采用类似微软的bitlocker则把密码放在tpm安全芯片中,用"密封"密钥的技术就很安全了.当然你可以自行修改源码达到这一点,这也许是开源的最大好处.如果一直把密码存储放在 tpm中,这又会带来前面的冷冻内存问题.只有在解密后放入tpm保护,不能持久化到 tpm中,像放在内存一样.
其他方法:
当有人把刀架在你脖子上逼你说密码怎么办?
这一点TrueCrypt想到了,NOD32自动激活器,用隐藏加密卷或隐形操作系统来解决这个问题.隐藏加密卷TrueCrypt说明如下:
可能在某些情况,有些人会迫使您告诉它们加密卷密码.有很多情况您可能无法拒绝这种要求(例如,存在暴力因素).使用这种隐藏加密卷可以解决此类问题,而不须泄漏隐藏加密卷密码."
隐形操作系统如下:
可能存在某些人强迫您解密操作系统的情况.在很多情况下您可能无法拒绝泄漏密码(例如,被诈骗).如果您选择了这个选项,您将会创建一个没有任何手段可以识别的隐形操作系统(当然这得需要您遵循一定的步骤创建).因此,您一定不要解密或者泄漏隐形操作系统的密码(译者注:这是因为隐形操作系统的存在只有你才知道,你不说没有任何手段可以检测到)
假设 *** 者可不是一般的人,他可以通过硬盘磁场残留侦探高科技来恢复加密系统前的数据,怎么办?
这一点TrueCrypt也想到了,只要擦除原来数据次数够多就可以了,nod32 24位激活码,看看TrueCrypt说明:
在某些存储介质上,当数据被其他数据覆盖后,也仍有可能通过磁力显微技术恢复出来被覆盖的数据.这也包括一些被加密方式覆盖的数据(这在TrueCrypt加密那些原来没有加密的系统分区或系统驱动器时可能会发生).根据一些政府机构发布的文献,通过使用仿随机或非随机数据覆盖一定次数可以阻止数据恢复或使数据恢复变的异常困难.因此,如果您确认攻击者可能会使用类似磁力显微技术恢复您的加密数据,您可以选择下拉列表中几种擦除算法中的一种(已经存在的数据不会丢失).需要说明的是在分区/驱动器加密后不需要再执行擦除操作.当分区/驱动器被完全加密后,不会再有非加密数据向其写入.写入加密卷中的任何数据都是在内存中即时加密,然后这些已加密数据才会被写入到磁盘.
不过上面的窃取密码方法只有软件窃取现实可行,但需要一定的条件,如在指定电脑上运行指定程序,但目前也没有这方面的软件.这个方法也是很好预防的.但如果电脑不在操作当中,无法从内存获取密码,想*** 是几乎不可能的.
TrueCrypt对一般使用者已经很安全,设置一下启动系统cmos密码更安全.网上传言有FBI后门,nod32免费激活码,说编译后的程序和发布的程序有5%的差异,无法知道是真是假.如果在算法上有后门,这个就高深了.另外后门可能是上传用户的密码,或文件概要,这个只要控制软件不联网就可以了.如果自已用下载的源码编译出来,应该没有这个问题.因为源码是公开的,没办法做手脚.如果用封闭商业软件,就更有可能有这方面的问题.总之,正确使用TrueCrypt安全性很高.
4. 数据库编程中密码盐起什么作用
上面应该是md5方式加密,一般来说有个秘钥,相当于一个用于计算的字符串,比如说aa,那么你的密码123会用md5的方式和秘钥aa进行计算,得到一个加密后的字符串。过程大概是这样。秘钥就是为了让别人也用md5的方式给你解密的时候,猜不到秘钥是多少,也不好解密。
5. php通过sha1加盐值加密的密码怎么破解
目前没有高效且简单到一试就灵方法..
这等于在理论上对全美的密码系统挑战...
而有这方法的会去拿很大笔的科技悬赏....
而你最多说句谢谢..
6. 请教一下QQ登录中对密码的加密盐值是怎么处理的,是md5 64位加密,但不知道盐值是怎么弄的。
一般web中sha,md5 加密算法,盐值为登录名: password=DigestUtils.md5Hex(name+pwd);
7. md5 为什么 加盐
原因:盐被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。即便两个用户使用了同一个密码,由于系统为它们生成的salt值不同,散列值也是不同的。
MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
(7)加密撒盐扩展阅读:
MD5相对MD4所作的改进:
1、增加了第四轮。
2、每一步均有唯一的加法常数。
3、减弱第二轮中函数的对称性。
4、第一步加上了上一步的结果,这将引起更快的雪崩效应(就是对明文或者密钥改变 1bit 都会引起密文的巨大不同)。
5、改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似。
6、近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应,各轮的位移量互不相同。
8. 求教nodejs怎么对密码进行加盐的hash加密
以前java项目最近打算用node.js重写,但是加密这里实在没搞定。java中加密是:1024次加盐sha-1加密,
一个例子:salt:47998d63768aa877,密文:,明文:yunstudio2013
下面是java代码:
private static byte[] digest(byte[] input, String algorithm, byte[] salt, int iterations) {
try {
MessageDigest digest = MessageDigest.getInstance(algorithm);
if (salt != null) {
digest.update(salt);
}
byte[] result = digest.digest(input);
for (int i = 1; i < iterations; i++) {
digest.reset();
result = digest.digest(result);
}
return result;
} catch (GeneralSecurityException e) {
throw Exceptions.unchecked(e);
}
}
我在js里面是这么干的,但是结果一直不对,代码如下:
//
var hash = crypto.createHmac("sha1", “47998d63768aa877”).update(“yunstudio2013”).digest(“hex”);
for (var i = 1; i < 1024; i++) {
hash = crypto.createHmac("sha1", “47998d63768aa877”).update(hash).digest(“hex”);
console.log(hash);
}
9. MD5加盐 加密密码,客户端发给后台的是明文吗
一般md5加密都是不可逆的,所以都是讲明文进行加密后对比数据库存储的密文