Sanjeev236 Ответов: 1

Декодирование кода контрольной суммы


Мне нужно расшифровать следующий код, то есть использовать код

public static string CalcChecksum(string instrFile)
    {
      ulong num1 = 0;
      uint num2 = 256;
      Tools.ReplaceChecksum(ref instrFile, "0000000000");
      byte[] bytes = Encoding.GetEncoding(1252).GetBytes(instrFile);
      int index = 0;
      while (index <= instrFile.Length - 1)
      {
        byte num3 = bytes[index];
        byte num4;
        byte num5;
        byte num6;
        if (index + 1 < instrFile.Length)
        {
          num4 = bytes[index + 1];
          if (index + 2 < instrFile.Length)
          {
            num5 = bytes[index + 2];
            num6 = index + 3 >= instrFile.Length ? (byte) 0 : bytes[index + 3];
          }
          else
          {
            num5 = (byte) 0;
            num6 = (byte) 0;
          }
        }
        else
        {
          num4 = (byte) 0;
          num5 = (byte) 0;
          num6 = (byte) 0;
        }
        ulong num7 = (ulong) (num2 * (num2 * (num2 * (uint) num3 + (uint) num4) + (uint) num5) + (uint) num6);
        num1 += num7;
        if (num1 > 4294967296UL)
          num1 -= 4294967296UL;
        index += 4;
      }
      return num1.ToString("0000000000");
    }


Что я уже пробовал:

Я попытался получить выходную числовую строку, соответствующую входной строке для функции.

Graeme_Grant

Как расшифровать? И с какой целью? Это математически рассчитанная величина.

Patrice T

Нет такой вещи, как расшифровка контрольной суммы.

1 Ответов

Рейтинг:
8

OriginalGriff

Проблема в том, что существует несколько различных форм контрольной суммы, и мы понятия не имеем, какой тип вы пытаетесь вычислить или какой тип вы должны использовать. И они варьируются от пробного "суммируй и байты, выбрасывай и неси" до ша-хешей!

В результате мы не можем сказать вам, что делать, чтобы исправить ваш метод-так что это будет зависеть от вас.
Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что именно то, что вы ожидали, произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас-вам пора освоить новый (и очень, очень полезный) навык: отладку!