Node Server, работающий в Ubuntu, который должен выполнять приложение на C # - как? - PullRequest
1 голос
/ 08 апреля 2019

У меня очень простое приложение на C #, написанное предыдущим человеком. Он использует MD5CryptoServiceProvider для вычисления хэша с использованием некоторых начальных строк для генерации случайного кода.

У меня запущен сервер Node.js, и я хотел бы запустить это приложение и использовать вывод.

Я не могу понять, как запустить C # из Ubuntu, и я не могу найти библиотеку MD5, которая предлагает тот же ответ.

Вот вся функция:

{

  MD5 md5 = new MD5CryptoServiceProvider();

  byte[] encodeBytes = System.Text.Encoding.UTF8.GetBytes(seed1+ seed2+ seed3);

  byte[] output = md5.ComputeHash(encodeBytes);

  string result = string.Format("{0:D}{1:D}{2:D}{3:D}{4:D}{5:D}",

                                ((output[0] + output[1]) % 10), ((output[2] + output[3] + output[4]) % 10),

                                ((output[5] + output[6]) % 10), ((output[7] + output[8] + output[9]) % 10),

                                ((output[10] + output[11] + output[12]) % 10), ((output[13] + output[14] + output[15]) % 10));

  return result;

}

Могу ли я изменить этот сценарий C # для запуска в качестве дочернего процесса или получить тот же ответ, используя сценарий C ++, который я уже запускал на сервере Node ранее.

Спасибо !!

Ответы [ 2 ]

3 голосов
/ 08 апреля 2019

Вы должны просто преобразовать свой код в Javascript:

function generateCode() {

  let seed1 = 'abc';
  let seed2 = 'def';
  let seed3 = 'ghi';
  let hashed = md5(seed1 + seed2 + seed3);
  let values = [];

  for (let i = 0; i < hashed.length; i += 2) {
    values.push(parseInt('0x' + hashed.substr(i, 2)));
  }

  let codeParts = [((values[0] + values[1]) % 10), ((values[2] + values[3] + values[4]) % 10),((values[5] + values[6]) % 10), ((values[7] + values[8] + values[9]) % 10),((values[10] + values[11] + values[12]) % 10), ((values[13] + values[14] + values[15]) % 10)];
  let code = codeParts.join('');
    alert(code);
}

generateCode();

Я использовал реализацию md5 из здесь , но любой, который возвращает шестнадцатеричное как строку, должен работать.

Образец Javascript

C # для сравнения (то же семя)

Конечно, это можно упростить, но это служит демонстрацией того, какЛегко просто конвертировать код.

0 голосов
/ 08 апреля 2019

Вы можете запускать файлы C # в Ubuntu, используя mono и mcs, я думаю, они работают очень хорошо. Вот учебная ссылка о том, как это сделать.

TL; DR: Сначала вам нужно будет установить Monodevelop. Это можно сделать с помощью следующих команд:

sudo apt-add-repository ppa:directhex/ppa  
sudo apt-get update  
sudo apt-get install monodevelop 

После установки mono вам необходимо установить mcs:

sudo apt-get install mcs 

Когда оба установлены правильно, вам нужно создать файл .cs (файл C #). Вы можете скомпилировать программу с помощью mcs (mcs <filename.cs>). Затем используйте mono для запуска сгенерированного exe-файла: mono <filename.exe>.

...