我有一个非常简单的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服务器一起运行。
谢谢!
答案 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实现,但是任何将十六进制作为字符串返回的函数都可以使用。
您当然可以简化此操作,但这只是简单地转换代码有多简单的示例。
答案 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>
。