一路學來 記得筆記不少 但是給自己看 當時就記得很隨意 以為后面都懂 但還是太單純了,現(xiàn)在回顧 自己都完全看不下去,所以以后的都放的博客上,讓自己看懂,讓感興趣的看懂,詳細,暴力 不廢話了 

MD5算法詳解   

    0x01定義:網(wǎng)上很多啊 

      MD5算法是單向散列算法的一種。單向散列算法也稱為HASH算法,是一種將任意長度的信息壓縮至某一固定長度(稱之為消息摘要)的函數(shù)(該壓縮過程不可逆)

  我們是對一個字符串進行MD5加密,所以我們先從字符串的處理開始。首先我們要知道一個字符的長度是8位(bit),即一個字節(jié)的長度?,F(xiàn)在我們要做的就是將一個字符串Str1分割成每512位為一個分組,形如N*512+R,最后多出來的不足512位的R部分先填充一個1,再接無數(shù)個0,直到補足512位。這里要注意,R為0時也要補位,這時候補512位,最高位1,形如1000…00;如果R超出448,除了要補滿這個分組外,還要再補上一個512位的分組(因為超過448位則不能留64位出來存放字符串的原長)。

  接著,講講將字符串分塊保存部分。一個512位的字符串分組要分成16個32位的子分組,在每個32位中,以字節(jié)為單位通過小端規(guī)則存入一個32位的變量中,可以考慮用int類型的變量(一個int變量32位),也可以考慮用unsigned int,這樣之后涉及的循環(huán)移位就不用考慮符號位了,這里還是以int為例。因為一個字符就是一個字節(jié)(8位),所以一個int類型變量能存放4個字符,假設(shè)一個字符

網(wǎng)友評論