在Ubuntu上运行的需要执行C#应用程序的节点服务器-如何?

时间:2019-04-08 06:15:47

标签: c# c++ node.js child-process

我有一个非常简单的C#应用​​程序,它是由以前的人编写的。它使用MD5CryptoServiceProvider通过一些种子字符串来计算哈希,以生成随机代码。

我有一个正在运行的Node.js服务器,我想执行此应用并使用输出。

我无法弄清楚如何从Ubuntu运行C#,也找不到具有相同答案的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 个答案:

答案 0 :(得分:3)

您应该只将代码转换为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();

我使用了here中的md5实现,但是任何将十六进制作为字符串返回的函数都可以使用。

Javascript sample

C# for comparison (same seed)

您当然可以简化此操作,但这只是简单地转换代码有多简单的示例。

答案 1 :(得分:0)

您可以使用mono和mcs在Ubuntu上运行C#文件,我认为它们工作得很好。这是a tuturial link的操作方法。

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>