LM Hash 計算方法

來源:互聯網
上載者:User

 

如何從明文口令產生LM Hash

假設明文口令是”Welcome”,首先全部轉換成大寫,再做如下變換

“WELCOME” -> 57454C434F4D4500000000000000

也就是說在明文口令不足14位元組的情況下,後面添加0×00補足14位元組。有些書上介紹
添加空格(0×20)補足14位元組,這是錯誤的,我不清楚是原作者寫錯了,還是譯者的問
題。

然後切割成兩組7位元組的資料,將7位元組的資料轉換為bit流,每7bit後面添加0補足8位,這樣得到兩組8位元組資料

57454C434F4D45 -str_to_key()-> 56A25288347A348A
00000000000000 -str_to_key()-> 0000000000000000

這兩組8位元組資料將做為DESKEY對魔術字串”KGS!@#$%”進行標準DES加密

“KGS!@#$%” -> 4B47532140232425

56A25288347A348A -對4B47532140232425進行標準DES加密-> C23413A8A1E7665F
0000000000000000 -對4B47532140232425進行標準DES加密-> AAD3B435B51404EE

將加密後的這兩組資料簡單拼接,就得到了最後的LM Hash

LM Hash: C23413A8A1E7665FAAD3B435B51404EE

顯然,由於明文口令一開始就全部轉換成大寫,導致多個明文口令對應一個LM Hash。
反過來,在窮舉破解LM Hash時,得到的有可能不是原始口令,因為不可能確定大小
寫。仔細觀察前述SMB身分識別驗證過程,即使這裡得到的不是原始口令(大小寫有差別),
同樣可以通過SMB身分識別驗證。這種轉換成大寫的行為減小了窮舉破解強度。

另一個弱點,當明文口令小於8位元組時,LM Hash後8位元組的計算過程總是這樣的

00000000000000 -str_to_key()-> 0000000000000000 -對4B47532140232425進行標準DES加密-> AAD3B435B51404EE

這也將減小窮舉破解強度。

IBM設計了這個LM Hash演算法,魔術字串”KGS!@#$%”的意義無從考證。這個演算法稱之
為”雜湊”不怎麼妥當,由於是標準DES加密,完全是可逆的。當然,由於要窮舉的是
DESKEY本身,與傳統所說的可逆有區別。

 

參考:http://blog.donews.com/zwell/archive/2004/08/19/71849.aspx

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.