Process.Start с хешем md5 в качестве аргумента - PullRequest
0 голосов
/ 28 июня 2011

Мне нужно, чтобы хэш MD5 был вторым аргументом после «входа в систему».

Вот код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Security.Cryptography;

namespace LauncherBeta1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {

            var password = System.Text.Encoding.UTF8.GetBytes(maskedTextBox1.Text);
            var account = System.Text.Encoding.UTF8.GetBytes(textBox1.Text);

            var hmacMD5 = new HMACMD5(password);
            var saltedHash = hmacMD5.ComputeHash(account);

            string[] args = { "login", saltedHash };
            Process.Start("program.exe", String.Join(" ", args));
        }

    }
}

Компилятор говорит, что строка string[] args = { "login", saltedHash }; имеет синтаксическую проблему,Какой правильный синтаксис?

1 Ответ

2 голосов
/ 28 июня 2011

Проблема в том, что ComputeHash возвращает байтовый массив, а не строку.Вам нужно как-то преобразовать этот байтовый массив в строку.Например, вы можете использовать кодировку Base64:

string[] args = { "login", Convert.ToBase64String(saltedHash) };

Но кодировка должна быть такой, какой ожидает процесс.Вполне может ожидать, что вместо этого в шестнадцатеричном формате, например,

string hex = BitConverter.ToString(saltedHash).Replace("-", "");
string[] args = { "login", hex };
...