2016-11-09 9 views
-2

Как создать поле отклика в ответ клиента на DIGEST MD5 вызова, I'am в настоящее время с помощью rfc 2831 для справкиDigest ответ md5 поколение

вызова от сервера в соответствии с RFC 2831 примера является:

realm="elwood.innosoft.com",nonce="OA6MG9tEQGm2hh",qop="auth", 
algorithm=md5-sess,charset=utf-8 

ответа от клиента в соответствии с RFC 2831, например:

charset=utf-8,username="chris",realm="elwood.innosoft.com", 
nonce="OA6MG9tEQGm2hh",nc=00000001,cnonce="OA6MHXh6VqTrRk", 
digest-uri="imap/elwood.innosoft.com", 
response=d388dad90d4bbd760a152321f2143af7,qop=auth 

collecte г детали:

  1. имя пользователя = Крисом
  2. пароль = секрет
  3. нонс = OA6MG9tEQGm2hh
  4. пс-значение = 00000001
  5. cnonce = OA6MHXh6VqTrRk
  6. QOP = Auth
  7. область = elwood.innosoft.com
  8. digesturi = imap/elwood.innosoft.com

Ответ Я генерации не соответствует, что в документе RFC 2831 например, на странице 19

Составы в RFC 2831

Пусть H (ы) быть 16 октетов хэш MD5 [ RFC 1321] октетной строки s.

Пусть KD (k, s) - H ({k, ":", s}), то есть 16-октетный хэш строки k, двоеточие и строка s.

Пусть HEX (n) является представлением 16-октетного MD5-хэша n в виде строки из 32 шестнадцатеричных цифр (с буквенными символами всегда в нижнем регистре, поскольку MD5 чувствителен к регистру).


В настоящее время i'am с помощью следующей процедуры:

А1 = {Н (Chris: elwood.innosoft.com: тайна), ":", Nonce Значение, ":", cnonce значение }

online md5 generator

А1 = {eb5a750053e4d2c34aa84bbc9b0b6ee7: OA6MG9tEQGm2hh: OA6MHXh6VqTrRk}

А2 = { "AUTHENTICATE:", дайджест-URI-значение} 2 = {AUTHENTICATE: imap/elwood.innosoft.ком}

Н (А1) = 54442ff1f394d9d0de1205cef4d9cebe

НЕХ (Н (А1)) = 54442ff1f394d9d0de1205cef4d9cebe

НЕХ (Н (А2)) = 15e3594677e51ade69715d1cb7d207ba


РЕАКЦИЯ = HEX (КД (HEX (H (A1)), {nonce-value, ":" nc-value, ":", cnonce-value, ":", qop-value, ":", HEX (H (A2))}))

RESPONSE = HEX (KD (54442ff1f394d9d0de1205cef4) d9cebe: OA6MG9tEQGm2hh: 00000001: OA6MHXh6VqTrRk: авт: 15e3594677e51ade69715d1cb7d207ba))

отклика, как указано выше процедуры:

26ef1190b643a36e879673066098379c


, но значение ответа в соответствии с RFC является:

d388dad90d4bbd760a152321f2143af7

Таким образом, сгенерированный отклик отличается от приведенного в примере rfc

Какие изменения необходимо выполнить?

ответ

0

Hi, Вы правильно рассчитали ответ, а пример в RFC2831 несовместим.

0

Расчет A1 неправильный. MD5 digest над chris: elwood.innosoft.com: секрет в вашем случае - 32-октетный шестнадцатеричный, 2 октета на исходный байт. В расчете RFC это 16-октетный, 1 октет = 1 байт.