Что нового

MD5 hash для команд pjlink

BoaConstrictor-FENIX

Новичок
Сообщения
11
Репутация
1
Здравствуйте!
Пытаюсь написать консольный клиент для управления проектором посредством протокола pjlink.
Столкнулся с проблемой генерации управляющей строки.
в мануале сказано:
Создайте из следующих данных 32-битное хэш-значение используя алгоритм MD5.
"xxxxxx:yyyyy:zzzzzzzz"
xxxxxx - имя пользователя
yyyyy - пароль
zzzzzzzz - случайное 8-битное число, которое возвращает проектор при создании tcp сессии.

Так же есть родная прога, которая работает, но она не консольная. Она генерирует следующее значение при логине "admin1" и пароле "panasonic":
RECV:blum:JLINK 1 000000eb
SEND:1b5c88d0033dd142854f0d64fd27743c%1POWR ?
То есть из строки "admin1:blum:anasonic:000000eb" прога генерирует хэш "1b5c88d0033dd142854f0d64fd27743c"
но при попытке вычислить MD5 общепринятыми средствами возвращается "b35ced5ba0a9ee71fd5ca40d46c9501f"

Я уже нашел декомпилятор и полез в код проги, которая работает, проблема в том, что я не шибко шарю в C#.
На сколько я понимаю за генерацию хэша отвечает этот участок кода.
Код:
using System.Security.Cryptography;
using System.Text;

namespace PJLinkTEST4common
{
  public class Cls_Authority
  {
    private const byte rndMax = 4;

    public string StrRandom
    {
      get
      {
        byte[] data = new byte[4];
        string str = "";
        new RNGCryptoServiceProvider().GetNonZeroBytes(data);
        for (int index = 0; index < 4; ++index)
          str += data[index].ToString("x2");
        return str;
      }
    }

    public string StrHash(string str)
    {
      byte[] hash = new MD5CryptoServiceProvider().ComputeHash(Encoding.ASCII.GetBytes(str));
      string str1 = "";
      for (int index = 0; index < hash.GetLength(0); ++index)
        str1 += hash[index].ToString("x2");
      return str1;
    }
  }
}

Подскажите пожалуйста как правильно сформировать управлющий сигнал.
Могу предоставить и саму прогу и мануал и декомпилятор.
 
Верх