#c# #c #node.js #child-process
#c# #c #node.js #дочерний процесс
Вопрос:
У меня есть очень простое приложение на 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 resu<
}
Могу ли я изменить этот скрипт на C # для запуска в качестве дочернего процесса или получить тот же ответ, используя скрипт на C , который я ранее запускал с узловым сервером.
Спасибо!!
Комментарии:
1. Не было бы лучшим решением просто преобразовать код C # в Javascript?
2. Вы должны ограничиться одной проблемой на вопрос. Либо спросите, как запустить порождение узла обмена данными с ним, либо спросите, как запустить программу на C # в Ubuntu, либо спросите, как реализовать данный код в nodejs.
3. в npm есть модуль для MD5 npmjs.com/package/js-md5
Ответ №1:
Вам следует просто преобразовать свой код в 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 из здесь, но любая, которая возвращает шестнадцатеричное значение в виде строки, должна работать.
C # для сравнения (то же начальное значение)
Вы, конечно, могли бы упростить это, но это служит демонстрацией того, насколько легко просто преобразовать код.
Ответ №2:
Вы можете запускать файлы 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>
.
Комментарии:
1. Если вы пишете ответ, то он должен быть автономным, чтобы читатель мог решить проблему, даже если внешние ссылки отключаются. По состоянию на эту ссылку только ответов недостаточно.