国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關(guān)注微信公眾號

使用MD5變換算法來防止窮舉破譯密碼
2007-01-18   賽迪網(wǎng)

MD5是在Web應(yīng)用程序中最常用的密碼加密算法。由于MD5是不可逆的,因而經(jīng)過MD5計(jì)算得到后的密文,不能通過逆向算法得到原文。

回顧在Web應(yīng)用程序中使用MD5加密文本密碼的初衷,就是為了防止數(shù)據(jù)庫中保存的密碼不幸泄露后被直接獲得。但攻擊者不但擁有數(shù)據(jù)量巨大的密碼字典,而且建立了很多MD5原文/密文對照數(shù)據(jù)庫,能快速地找到常用密碼的MD5密文,是破譯MD5密文的高效途徑。然而,MD5密文數(shù)據(jù)庫所使用的是最常規(guī)的MD5加密算法:原文-->MD5-->密文。因此,我們可以使用變換的MD5算法,使現(xiàn)成的MD5密文數(shù)據(jù)庫無所作為。

下面演示一些變換算法的例子,當(dāng)然,在其它的Web開發(fā)語言中,也大同小異,完全能得到相同的結(jié)果。

變換一:循環(huán)MD5

最容易理解的變換就是對一個(gè)密碼進(jìn)行多次的MD5運(yùn)算。自定義一個(gè)函數(shù),它接受$data和$times兩個(gè)形參,第一個(gè)是要加密的密碼,第二個(gè)是重復(fù)加密的次數(shù)。實(shí)現(xiàn)這種變換有兩種算法:

//迭代算法
function md5_1_1($data, $times = 32)
{
//循環(huán)使用MD5
for ($i = 0; $i < $times; $i++) {
$data = md5($data);
}
return $data;
}
//遞歸算法
function md5_1_2($data, $times = 32)
{
if ($times > 0) {
$data = md5($data);
$times--;
return md5_1_2($data, $times); //實(shí)現(xiàn)遞歸
} else {
return $data;
}
}
?>

變換二:密文分割MD5

盡管用戶的密碼是不確定的字符串,但是只要經(jīng)過一次MD5運(yùn)算后,就會(huì)得到一個(gè)由32個(gè)字符組成的字符串,這時(shí)可以再針對這個(gè)定長字符串變換。有點(diǎn)BT的算法是,把這段密文分割成若干段,對每段都進(jìn)行一次MD5運(yùn)算,然后把這堆密文連成一個(gè)超長的字符串,最后再進(jìn)行一次MD5運(yùn)算,得到仍然是長度為32位的密文。

//把密文分割成兩段,每段16個(gè)字符
function md5_2_1($data)
{
//先把密碼加密成長度為32字符的密文
$data = md5($data);
//把密碼分割成兩段
$left = substr($data, 0, 16);
$right = substr($data, 16, 16);
//分別加密后再合并
$data = md5($left).md5($right);
//最后把長字串再加密一次,成為32字符密文
return md5($data);
}
//把密文分割成32段,每段1個(gè)字符
function md5_2_2($data)
{
$data = md5($data);
//循環(huán)地截取密文中的每個(gè)字符并進(jìn)行加密、連接
for ($i = 0; $i < 32; $i++) {
$data .= md5($data{$i});
}
//這時(shí)$data長度為1024個(gè)字符,再進(jìn)行一次MD5運(yùn)算
return md5($data);
}
?>

當(dāng)然,這種密文分割的具體算法是數(shù)之不盡的,比如可以把原密文分割成16段每段兩字符、8段每段4字符,或者每一段的字符數(shù)不相等……

變換三:附加字符串干涉

在加密過程的一個(gè)步驟中,附加一個(gè)內(nèi)容確定的字符串(比如說用戶名),干涉被加密的數(shù)據(jù)。不可以用隨機(jī)字串,因?yàn)檫@樣會(huì)使原算法無法重現(xiàn)。這種算法在某些情況下是很具有優(yōu)勢的,比如說用于大量的用戶密碼加密,可以把用戶名作為附加干涉字串,這樣攻擊者就算知道你的算法,也很難從他們手中的字典中一下子生成海量的對照表,然后大量地破譯用戶密碼,只能有針對性的窮舉為數(shù)不多的用戶。

//附加字符串在原數(shù)據(jù)的尾部
function md5_3_1($data, $append)
{
return md5($data.$append);
}
//附加字符串在原數(shù)據(jù)的頭部
function md5_3_2($data, $append)
{
return md5($append.$data);
}
//附加字符串在原數(shù)據(jù)的頭尾
function md5_3_3($data, $append)
{
return md5($append.$data.$append);
}
?>

變換四:大小寫變換干涉

由于PHP所提供的md5()函數(shù)返回的密文中的英文字母全部都是小寫的,因此我們可以把它們?nèi)哭D(zhuǎn)為大寫,然后再進(jìn)行一次MD5運(yùn)算。

function md5_4($data)
{
//先得到密碼的密文
$data = md5($data);
//再把密文中的英文母全部轉(zhuǎn)為大寫
$data = strtotime($data);
//最后再進(jìn)行一次MD5運(yùn)算并返回
return md5($data);
}
?>

變換五:字符串次序干涉

把MD5運(yùn)算后的密文字符串的順序調(diào)轉(zhuǎn)后,再進(jìn)行一次MD5運(yùn)算。

function md5_5($data)
{
//得到數(shù)據(jù)的密文
$data = md5($data);
//再把密文字符串的字符順序調(diào)轉(zhuǎn)
$data = strrev($data);
//最后再進(jìn)行一次MD5運(yùn)算并返回
return md5($data);
}
?>

變換六、變換七、變換八……

MD5變換算法是數(shù)之不盡的,甚至無須自己再去創(chuàng)造,就用上面的五個(gè)互相組合就可以搞出很BT的算法。比如說先循環(huán)加密后再分割,并在每一段上附加一個(gè)字符串再分別加密,然后變換大小寫并顛倒字符串順序后連成一個(gè)長字符串再進(jìn)行MD5運(yùn)算……

如果真的很不幸,由于某些漏洞,比如說SQL Injection或者文件系統(tǒng)中的數(shù)據(jù)庫被下載而異致用戶密碼數(shù)據(jù)暴露,那么MD5變換算法就能大大地增加破譯出密碼原文的難度,首先就是使網(wǎng)上很多的MD5原文/密文對照數(shù)據(jù)庫(要知道,這是破譯MD5最高效的方法)沒有用了,然后就是使攻擊者用常規(guī)算法去窮舉一串由變換算法得到的密文而搞得焦頭爛額。當(dāng)然,MD5變換算法特別適合用于非開源的Web程序使用,雖說用在開源的程序中優(yōu)勢會(huì)被削弱(大家都知道算法),但是也能抑制MD5原文/密文對照數(shù)據(jù)庫的作用。要進(jìn)行這些復(fù)雜的變換運(yùn)算,當(dāng)然就要花費(fèi)的更多的系統(tǒng)開銷了,然而對于安全性要求很嚴(yán)格的系統(tǒng)來說,多付出一些來換取高一點(diǎn)的安全性,是完全值得的。

熱詞搜索:

上一篇:系統(tǒng)安全之單機(jī)雙操作系統(tǒng)殺毒的技巧
下一篇:Win XP遠(yuǎn)程桌面雙管理員同時(shí)登錄(上)

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
欧美综合一区二区三区| 欧美日韩亚洲综合在线| 在线观看视频一区| 伊人色综合久久天天人手人婷| 成人av影视在线观看| 中文字幕在线免费不卡| 色综合天天综合| 午夜私人影院久久久久| 精品国产乱码久久久久久夜甘婷婷 | 美女久久久精品| 日本一区二区不卡视频| 91久久精品国产91性色tv| 日本欧美大码aⅴ在线播放| 国产亚洲自拍一区| 欧美色精品天天在线观看视频| 精品一区二区三区免费视频| 亚洲精品欧美激情| 欧美精品一区在线观看| 色哟哟一区二区| 国产一区二区三区久久久| 一区二区不卡在线视频 午夜欧美不卡在| 欧美一区二区三区色| 97久久超碰国产精品| 蜜臀av在线播放一区二区三区| 国产精品久久久久久久久免费丝袜 | 成人黄色大片在线观看| 天天影视涩香欲综合网| 国产精品国产自产拍高清av| 精品精品国产高清a毛片牛牛 | 91精品福利在线| 国产精品一区二区在线观看不卡| 亚洲图片欧美一区| 国产精品久久夜| 久久精品一二三| 欧美成人综合网站| 欧美巨大另类极品videosbest | 一区二区在线免费观看| 国产拍欧美日韩视频二区| 欧美一级在线观看| 欧美群妇大交群的观看方式 | 91视频com| 成人高清视频免费观看| 国产成人在线视频网站| 国产原创一区二区三区| 激情综合亚洲精品| 狠狠色丁香久久婷婷综合丁香| 美腿丝袜亚洲一区| 日韩精品电影一区亚洲| 亚洲国产aⅴ成人精品无吗| 曰韩精品一区二区| 亚洲国产综合色| 亚洲大片在线观看| 日韩电影在线一区| 日本女人一区二区三区| 蜜桃视频一区二区三区在线观看| 日本午夜精品视频在线观看| 日韩影视精彩在线| 久久99精品国产麻豆不卡| 久久99精品久久久久久动态图| 久久99精品视频| 国产99久久久精品| 99精品欧美一区二区三区综合在线| 成人国产一区二区三区精品| 一本色道久久综合亚洲aⅴ蜜桃 | 色偷偷久久一区二区三区| 在线亚洲一区观看| 91精品国产一区二区| 日韩欧美国产一区二区在线播放| 欧美成人伊人久久综合网| 国产日韩精品久久久| 最近日韩中文字幕| 亚洲成人av电影| 久久91精品国产91久久小草| 成人免费黄色大片| 欧美主播一区二区三区美女| 91精品久久久久久久91蜜桃| 久久久99久久精品欧美| 亚洲日本成人在线观看| 亚洲18色成人| 狠狠色狠狠色综合| 色婷婷久久99综合精品jk白丝| 欧美人狂配大交3d怪物一区| 精品国产一区a| 亚洲人成网站在线| 婷婷六月综合网| 国产69精品久久久久毛片| 欧美午夜不卡在线观看免费| 日韩精品一区二区三区老鸭窝| 国产精品久久久久aaaa樱花 | 欧美在线一区二区| 久久久久久久久久久久久久久99 | 欧美在线free| 久久精品视频免费观看| 五月天视频一区| 91香蕉视频黄| 国产午夜久久久久| 日本怡春院一区二区| 99久久777色| 国产视频一区二区在线| 午夜精品久久久久久久久久久 | 高清av一区二区| 日韩一区二区三区在线观看| 日韩毛片视频在线看| 国内成+人亚洲+欧美+综合在线| 在线看不卡av| 中文字幕在线一区免费| 黄色日韩三级电影| 欧美日韩国产另类一区| 一区二区三区免费观看| av电影天堂一区二区在线观看| 日韩欧美成人激情| 日韩国产欧美一区二区三区| 色8久久精品久久久久久蜜| 国产欧美视频一区二区三区| 久久99蜜桃精品| 日韩一区二区视频| 日韩av网站在线观看| 欧美唯美清纯偷拍| 一区二区三区精密机械公司| caoporm超碰国产精品| 久久久91精品国产一区二区精品 | 高潮精品一区videoshd| 国产色产综合色产在线视频| 国产在线精品一区在线观看麻豆| 91精品国产一区二区三区香蕉| 亚洲一卡二卡三卡四卡五卡| 日本久久精品电影| 亚洲午夜在线电影| 欧美日韩精品一区二区三区| 午夜精品久久久久久| 欧美一区二区三区在线电影| 蜜桃av一区二区| 色8久久精品久久久久久蜜| 亚洲男人电影天堂| 91黄色免费网站| 午夜视频在线观看一区二区三区| 欧美日韩免费一区二区三区视频| 日韩专区欧美专区| 日韩精品专区在线影院重磅| 国产又粗又猛又爽又黄91精品| 久久精品在线观看| 91免费看视频| 肉丝袜脚交视频一区二区| 欧美成人午夜电影| 99这里只有精品| 亚洲成a人v欧美综合天堂| 日韩欧美电影在线| 99精品久久99久久久久| 五月婷婷激情综合| 国产日韩精品一区二区浪潮av| 色老汉一区二区三区| 日本美女一区二区| 国产亚洲成年网址在线观看| 色爱区综合激月婷婷| 老司机精品视频线观看86| 国产精品久久久久久久第一福利| 欧美日韩和欧美的一区二区| 国产在线精品免费| 亚洲精品国产成人久久av盗摄| 538prom精品视频线放| 国产99久久精品| 亚洲国产视频直播| 国产网红主播福利一区二区| 欧美日韩大陆在线| 成人激情图片网| 久久99精品久久久久久国产越南 | 亚洲日穴在线视频| 日韩女优av电影在线观看| 99久久精品久久久久久清纯| 日本不卡免费在线视频| 国产精品久久久久一区| 精品国产一区二区三区av性色| 91视视频在线观看入口直接观看www | 国产69精品久久久久毛片| 亚洲国产精品一区二区尤物区| 精品国产伦一区二区三区观看方式 | 日韩亚洲欧美成人一区| 色悠悠久久综合| 国产一区二区毛片| 亚欧色一区w666天堂| 国产精品护士白丝一区av| 日韩一区二区三区观看| 精品视频一区二区不卡| 色综合激情久久| 91亚洲永久精品| 99麻豆久久久国产精品免费 | 国产日韩欧美不卡| 欧美va天堂va视频va在线| 欧美午夜一区二区三区免费大片| 成人动漫一区二区三区| 国产精品主播直播| 精品一区二区影视| 美女视频黄a大片欧美| 日产国产欧美视频一区精品| 午夜视频一区二区三区| 亚洲国产cao| 天天色 色综合| 五月天国产精品| 日本伊人精品一区二区三区观看方式| 亚洲一区影音先锋|