注意生成「一定長」,這個「一定長」到底是多長呢!看了好多資料,包括維基百科和一些論壇,說md5其實進過演算法產生的是固定的128bit,即128個0和1的二進位制位,而在實際應用開發中,通常是以16進製制輸出的,所以正好就是32位的16進製制,說白了也就是32個16進製制的數字。
ios md5加密的方法如下
#import其中%02x是格式控制符:『x』表示以16進製制輸出,『02』表示不足兩位,前面補0;如『f』輸出為0f,『1f3』則輸出1f3;本來一般的都會介紹到這裡就完了,我想多介紹一下**中result是個字元陣列,那為什麼是[16]呢,這是因為md5演算法最後生成的是128位,而在計算機的最小儲存單位為位元組,1個位元組是8位,對應乙個char型別,計算可得需要16個char。所以result是[16]。那麼為什麼輸出的格式一定是%02x呢,而不是其它呢。這也是有原因的:因為約定md5一般是以16進製制的格式輸出,那麼其實這個問題就轉換為把128個0和1以16進製制來表示,每4位二進位制對應乙個16進製制的元素,則需要32個16進製制的元素,如果元素全部為0,放到char的陣列中,正常是不會輸出,如00001111,以%x輸出,則是f,那麼就會丟失0;但如果以%02x表示則輸出結果是0f,正好是轉換的正確結果。- (nsstring *)md5:(nsstring *)str
所以以上就是char[16]和%02x的來歷。
至於人們說的16位md5加密,其實是這樣的:舉例如果產生的md5加密字串是:01234567abcdefababcdefab
76543210
,則16位的md加密字元是abcdefababcdefab,也就是只是擷取了中間的16位。實際上這個操作已經不是md5加密演算法所包括的,而應當是對md5加密演算法結果的二次處理。其它的64位和大小寫什麼的,都屬於對md5演算法結果的二次處理。因為md5演算法產生的結果就是128bit,128個二進位制數字。
以上就是我對md5關於16位和32位的一些簡單理解,呵呵。
關於MD5加密
前言 任何以明文方式儲存使用者密碼的行為都是耍流氓。md5作為一種單項加密方式,常用在資料脫敏和軟體數字簽名等方面。以下是介紹正文 md5的全稱是message digest algorithm 5 資訊 摘要演算法 在90年代初由mit laboratory for computer scienc...
關於MD5加密
md5 tanajiya.tar.gz 0ca175b9c0f726a831d895e269332461 這就是tanajiya.tar.gz檔案的數字簽名。md5將整個檔案當作乙個大文字資訊,通過其不可逆的字串變換演算法,產生了這個唯一的md5資訊摘要。為了讓讀者朋友對md5的應用有個直觀的認識,...
關於md5加密
說明 隨著網路發展的越來越廣泛,網上業務越來越流行,使用者的隱私資訊安全性也越來越重要!加密的方式有很多種 目前比較受程式設計師推崇的還是md5加密!md5加密的原理 對任何資訊進行處理生成唯一的128位雜湊表,也就是32個字元 使用步驟 可以直接使用xcode提供的加密也可以在文件中匯入第三方的m...