2017-07-17 66 views
1

我將一個HMAC-MD5編碼參數傳遞給一個表單,並且供應商將它作爲無效返回。但是,它匹配他們的哈希生成器給我的東西,除了字母的大寫。我做了什麼來解決這個問題是使用l​​case命令。我想知道這是否會在以後給我帶來麻煩。 Coldfusion以大寫字母生成散列字符串,供應商似乎總是使用小寫字母;它總是一個或另一個或將他們混合?MD5散列總是大寫還是小寫?

+0

你爲什麼要問這個?你需要什麼? – Christian

+0

就像我說的,我的散列與供應商不匹配,僅僅是因爲字母的外殼。他們使用它進行身份驗證。 –

+0

如果他們將MD5用於他們過去生活的任何事物。就情況而言,我試圖回答這個問題。 – tadman

回答

1

MD5作爲每隔一個散列函數將產生二進制輸出,在MD5的情況下,它是16個字節。

因爲那些字節難以處理,所以他們將編碼爲爲一個字符串。在MD5的情況下,它們通常編碼爲32位小寫十六進制數字,因此每個字節由2個字符表示。

無論所述目標系統接受大寫或小寫編碼或兩者是高達體系,它是無關的散列函數,兩者都是一個相同的MD5哈希的不同表示。因此,要回答您的問題,請將目標系統要求的輸出格式化。

0

十六進制字符串可以包含在0什麼 - 9a - fA - F範圍,所以你應該預見大寫和小寫版本。

如果你真的想卡住兩個高度固執己見系統之間的接口,根據您的要求迫使大寫或小寫。

+0

不是a-f和a-f是一回事嗎? MD5是十六進制,這意味着0-9和a-f,但不是A-F。如果是這樣,他們都是同一件事。 – Christian

+0

@Christian他們應該是,但一些遺留軟件可能非常詭異。 – tadman

+0

一些(有問題的)系統在額外的步驟中對MD5進行加密或編碼,使得案例與最終輸出相關。始終遵循記錄/推薦的方式以避免出現差異。 – Alex

相關問題