[英]Is the result of a md5 hash consistant or server dependent?
我正在做一個md5哈希,只是想確保結果:
md5.ComputeHash(bytePassword);
無論服務器是否一致?
例如Windows 2003/2008和32/64位等。
是的,它是一致的, md5算法規范定義它,無論平台如何。
MD5獨立於操作系統和體系結構。 所以它是“一致的”。
但是 ,MD5將任意比特序列作為輸入,並輸出128比特的序列。 在許多情況下,您需要字符串。 例如,您希望哈希密碼,密碼最初是一個字符串。 將該字符串轉換為位序列不是MD5本身的一部分,並且存在若干約定。 我String.getBytes()
知道C#,但Java等效的String.getBytes()
方法將使用“platform default charset”,它可能隨操作系統安裝而變化。 類似地,MD5的輸出通常轉換為具有十六進制表示法的字符串,並且可以是大寫或小寫或其他。
因此,雖然MD5本身是一致的,但是在為MD5准備數據並對其輸出進行后處理的部分中經常會出現錯誤。 謹防。
md5哈希的結果是一個數字。 無論您使用何種服務器甚至平台,給定輸入返回的數字始終相同。
但是,數字的表達可能會有所不同。 例如, 1
和1.0
是相同的數字,但表達方式不同。 類似地,某些平台將返回與其他平台略有不同的哈希格式。 在這種情況下,你有一個字節數組,這應該是相當安全的傳遞。 將它轉換為字符串后要小心。
MD5 Hashing是[系統/時間/除輸入之外的任何東西]獨立
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.