MD5 рд╣реИрд╢ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреНрдпрд╛ рд╣реИ?
MD5 рд╣реИрд╢ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЖрдкрдХреЗ рджрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдЯреЗрдХреНрд╕реНрдЯ рдХрд╛ 128-рдмрд┐рдЯ MD5 рдореИрд╕реЗрдЬ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред MD5 (Message-Digest Algorithm 5, рдЬрд┐рд╕реЗ RFC 1321 рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХрд┐рд╕реА рднреА рд▓рдВрдмрд╛рдИ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рд▓реЗрдХрд░ рдПрдХ рддрдп 32-рдЕрдХреНрд╖рд░ рдХрд╛ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдмрдирд╛рддрд╛ рд╣реИред рдПрдХ рд╣реА рдЗрдирдкреБрдЯ рд╕реЗ рд╣рдореЗрд╢рд╛ рд╡рд╣реА рд╣реИрд╢ рдмрдирддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕рд┐рд░реНрдлрд╝ рдПрдХ рдЕрдХреНрд╖рд░ рдмрджрд▓рдиреЗ рдкрд░ рднреА рдирддреАрдЬрд╛ рдкреВрд░реА рддрд░рд╣ рдЕрд▓рдЧ рдЖ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреИрд╕реЗ рдХрд░реЗрдВ
рдЕрдкрдирд╛ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдмреЙрдХреНрд╕ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдпрд╛ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдФрд░ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЖрдкрдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ UTF-8 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдПрдирдХреЛрдб рдХрд░рддрд╛ рд╣реИ, MD5 рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓рдЧрд╛рддрд╛ рд╣реИ, рдФрд░ рд▓реЛрдЕрд░рдХреЗрд╕ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдХреА рд▓рдВрдмрд╛рдИ (рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ) рдФрд░ рдЙрд╕рдХрд╛ рдЖрдХрд╛рд░ (UTF-8 рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ) рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдмреЙрдХреНрд╕ рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рджреЗрдиреЗ рдкрд░ рдЖрдкрдХреЛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЬрд╛рдирд╛-рдкрд╣рдЪрд╛рдирд╛ рд╣реИрд╢ рджрд┐рдЦреЗрдЧрд╛ред
рдлрд╝реЙрд░реНрдореВрд▓рд╛ рд╕рдордЭреЗрдВ
MD5 рдПрдХ MerkleтАУDamg├еrd рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдореИрд╕реЗрдЬ рдореЗрдВ рдкрд╣рд▓реЗ рдПрдХ 0x80 рдмрд╛рдЗрдЯ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ, рдлрд┐рд░ рдЬрд╝реАрд░реЛ рддрдм рддрдХ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рд▓рдВрдмрд╛рдИ 56 mod 64 рдмрд╛рдЗрдЯреНрд╕ рди рд╣реЛ рдЬрд╛рдП, рдФрд░ рдЖрдЦрд╝рд┐рд░ рдореЗрдВ рдореВрд▓ рдмрд┐рдЯ-рд▓рдВрдмрд╛рдИ рдХреЛ 64-рдмрд┐рдЯ little-endian рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреИрдб рдХрд┐рдП рдЧрдП рдореИрд╕реЗрдЬ рдХреЛ 512-рдмрд┐рдЯ рдмреНрд▓реЙрдХреНрд╕ рдореЗрдВ рдмрд╛рдБрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рд░ рдмреНрд▓реЙрдХ рдХреЛ рдЪрд╛рд░ рд░рд╛рдЙрдВрдб рдореЗрдВ 64 рдСрдкрд░реЗрд╢рди рдХреЗ рдЬрд╝рд░рд┐рдП рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ тАФ рдЗрд╕рдореЗрдВ рдиреЙрдирд▓реАрдирд┐рдпрд░ рдлрд╝рдВрдХреНрд╢рди, sin рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдкреНрд░рддрд┐-рд╕реНрдЯреЗрдк рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ, рдФрд░ left-rotation рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддрд╛ рд╣реИред рдЪрд╛рд░ 32-рдмрд┐рдЯ рд╕реНрдЯреЗрдЯ рд╡рд░реНрдб (\(A\), \(B\), \(C\), \(D\)) рддрдп seeds рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ; рдЗрдирдХрд╛ рдЕрдВрддрд┐рдо little-endian рдЬреЛрдбрд╝ рд╣реА рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рд╣реЛрддрд╛ рд╣реИред
рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг
рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ ("") рдореЗрдВ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдкреИрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдпрд╣ рдПрдХ рд╣реА 512-рдмрд┐рдЯ рдмреНрд▓реЙрдХ рдмрди рдЬрд╛рддреА рд╣реИ, рдФрд░ MD5 рдХрд╛ рдирддреАрдЬрд╛ рд╣реЛрддрд╛ рд╣реИ d41d8cd98f00b204e9800998ecf8427eред рдЯреЗрдХреНрд╕реНрдЯ "hello" (5 рдмрд╛рдЗрдЯ) рдХрд╛ рд╣реИрд╢ рд╣реИ 5d41402abc4b2a76b9719d911017c592ред
рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╡рд╛рд▓
рдХреНрдпрд╛ MD5 рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ? рдирд╣реАрдВред MD5 рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рддреМрд░ рдкрд░ рдЯреВрдЯ рдЪреБрдХрд╛ рд╣реИ тАФ рдЗрд╕рдореЗрдВ collision рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдЗрд╕реЗ рд╕рд┐рд░реНрдлрд╝ checksum рдФрд░ рдЧреИрд░-рд╕реБрд░рдХреНрд╖рд╛ рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ, рдкрд╛рд╕рд╡рд░реНрдб рдпрд╛ рдбрд┐рдЬрд┐рдЯрд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
рдмрд╛рдЗрдЯ рдЧрд┐рдирддреА рдФрд░ рдХреИрд░реЗрдХреНрдЯрд░ рдЧрд┐рдирддреА рдЕрд▓рдЧ рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ? рдЧреИрд░-ASCII рдЕрдХреНрд╖рд░ UTF-8 рдореЗрдВ рдПрдХ рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдмрд╛рдЗрдЯ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП 3 рдЕрдХреНрд╖рд░ рд╡рд╛рд▓реА рдПрдХ рдЗрдореЛрдЬреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрдИ рдмрд╛рдЗрдЯ рдХреА рд╣реЛ рд╕рдХрддреА рд╣реИред
рдХреНрдпрд╛ рдЗрдирдкреБрдЯ рдХреЗ рдЕрдкрд░/рд▓реЛрдЕрд░рдХреЗрд╕ рд╕реЗ рдлрд╝рд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИ? рд╣рд╛рдБред "Hello" рдФрд░ "hello" рдХреЗ рд╣реИрд╢ рдкреВрд░реА рддрд░рд╣ рдЕрд▓рдЧ рдЖрддреЗ рд╣реИрдВред