当前位置:首页 > 百科 > 正文内容

MD5不安全?是不是“加把盐”就安全了?-md5()

2023-09-20 10:07:15TONY百科33

众所周知,MD5指的是消息摘要5算法,是一种加密哈希函数。MD5即Message-Dig好技术网est Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法)MD5算法是不可逆的。

MD5是什么样的?

我们有时候在下载东西时,经常会在压缩包属性里看到md5值。而且这个下载页面,很可能会有提示:“此文件的MD5值为XXXXXXXXX”,那这有什么作用?md5,其实可以认为是一种算法,它可以将一个字符串,或文件,或压缩包,通过执行md5后,就可以生成一个固定长度为128bit的串。这个串,基本上是唯一的。

如果,这个压缩包有人修改过,就会生成新的串,这时就可以拿网站提供的串和新生成的串对比,如果不一样,就证明被人修过了。这就是我们常说的用来验证数据完整性的作用。那么又是如何校验数据完整性的?可以使用例如MD5在线加解密工具(md5.cn)

问题来了,这样校验是不是证明md5不安全了?

其实不是md5不安全,而是不正确的md5用法不安全。MD5算法在2004年前让人们确信,它能保卫电子签名在现实中的绝对安全。2004年前,大部分软件开发商、认证中心、网站等使用MD5算法。

从安全的角度讲,MD5的输出为128位,若采用纯强力攻击寻找一个消息具有给定Hash值的计算困难性为2128,用每秒可试验1000000000个消息的计算机需时1.07×1022年。若采用生日攻击法,寻找有相同Hash值的两个消息需要试验264个消息,用每秒可试验1000000000个消息的计算机需时585年。

MD5不安全?“加把盐”就安全好了

什么是加盐?盐(Salt)在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。

人们通常用Hash来加密用户的密码,如果不加盐,即使是两层的md5也可以借助彩虹表破译。彩虹表是网上搜集的各种字符组合的Hash加密结果。加盐就是通过一组随机字符和用户原密码的组合,人为地形成一个新的字符,从而增加破译的难度。

一种比较简单的加盐的方式

 public static Guid ToRandomMD5(string input)         {             using (var md5Provider = new MD5CryptoServiceProvider())             {                 //获取一个256以内的随机数,用于充当 "盐"                 var salt = (byte)Math.Abs(new object().GetHashCode() % 256);                 input += salt;                 var bytes = Encoding.UTF8.GetBytes(input);                 var hash = md5Provider.ComputeHash(bytes);                 hash[0] = salt;                 return new Guid(hash);             }         }         public static bool EqualsRandomMD5(string input, Guid rmd5)         {             var arr = rmd5.ToByteArray();             //将盐取出来             var salt = arr[0];             using (var md5Provider = new MD5CryptoServiceProvider())             {                 input += salt;                 var bytes = Encoding.UTF8.GetBytes(input);                 var hash = md5Provider.ComputeHash(bytes);                 for (int i = 1; i < 16; i++)                 {                     if (hash[i] != arr[i])                     {                         return false;                     }                 }                 return true;             }         }

简单的来说就是把盐放到密文里面md5 hash完之后得到一个16长度的byte而byte可以保存0~255的整数,所以例子里面,随机的盐就是0~255的数字。测试地址:https://md5.cn/

加盐操作是为了让密码更为复杂,保密性更强。“盐”是为了提高密码的复杂度,增大正面恶意解密的难度。

“MD5不安全?是不是“加把盐”就安全了?-md5()” 的相关文章

400万!韩旭李梦领衔女篮薪资榜,四川女篮夺冠奖金仅50万-女篮一个月工资多少钱?

400万!韩旭李梦领衔女篮薪资榜,四川女篮夺冠奖金仅50万-女篮一个月工资多少钱?

中国女篮连续取得好成绩,但是中国女篮联赛WCBA却面临比较尴尬的局面,中国篮协提出的下赛季方案中,其中一套还是打赛会制。显然这样的做法,根本不利于女篮俱乐部发展。有媒体曝光了上赛季WCBA联赛的奖金分配方案。 上赛季WCBA拿出的总奖金是200万元,按照名次分奖金,第一名...

WNBA|李梦打出加盟神秘人队最强一战 各项数据创新高-李梦比赛

WNBA|李梦打出加盟神秘人队最强一战 各项数据创新高-李梦比赛

17日,WNBA常规赛继续进行。神秘人以88比69击败水星队。代表神秘人出战的中国球员李梦WNBA职业生涯首次首发出战,全场上场27分钟,12投5中,命中4个三分球,得到14分,这是李梦加盟神秘人后打出的最强...

2024欧洲杯预选赛分档:意大利、葡萄牙一档 英格兰、法国二档-2024欧洲杯比赛时间表格

2024欧洲杯预选赛分档:意大利、葡萄牙一档 英格兰、法国二档-2024欧洲杯比赛时间表格

直播吧9月28日讯 欧国联小组赛全部结束,2024欧洲杯预选赛分档正式出炉,荷兰、西班牙、葡萄牙等10队进入第一档,英格兰、法国等队进入第二档。 据悉,欧洲杯预选赛抽签仪式将于10月9日中午在法兰克...

2020年欧洲杯完整赛程:看看死亡之组怎么踢-欧洲杯死亡之组据98db in

2020年欧洲杯完整赛程:看看死亡之组怎么踢-欧洲杯死亡之组据98db in

欧洲杯分组   北京时间12月1日1时(罗马尼亚当地时间11月30日18时),2020年欧洲杯小组赛抽签在布加勒斯特罗马尼亚会展中心举行。德国和另外两档的强队法国、葡萄牙进入死亡之组;意大利抽到瑞士、土耳其和威尔士;西班牙遭遇波兰和瑞...

NBA最新排名:勇士湖人止3连胜 独行侠4连败 森林狼3连胜升第7-勇士湖人2023常规赛交手记录

NBA最新排名:勇士湖人止3连胜 独行侠4连败 森林狼3连胜升第7-勇士湖人2023常规赛交手记录

独行侠104-110黄蜂!三天之内第二次输给黄蜂,独行侠惨遭4连败。东契奇40分12篮板,欧文持续低迷,15中5得到18分。自从进入斋月以来,近两场比赛,欧文场均18分,不过投篮命中率只有35.5%。 公牛118-108湖人!千呼万唤始出来,詹姆斯复出,替补出战,但是却没能帮助球队...

原创 NBA最新战报排名:太阳4连胜坐稳第一,湖人3连败胜率跌至5成-NBA战报虎扑

原标题:NBA最新战报排名:太阳4连胜坐稳第一,湖人3连败胜率跌至5成 北京时间12月22日,NBA常规赛比赛继续进行。在今天总共有5场比赛,其中热火在主场对阵步行者,尼克斯主场面对活塞队,鹈鹕主场对阵开拓者,森林狼客场挑战独行侠,湖人在主场迎战太阳队。 太阳118-9...