首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以md5哈希作为参数的Process.Start

以md5哈希作为参数的Process.Start
EN

Stack Overflow用户
提问于 2011-06-29 02:19:19
回答 1查看 298关注 0票数 0

我需要登录散列是“MD5”之后的第二个参数。

代码如下:

代码语言:javascript
复制
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 };行有一个语法问题。正确的语法是什么?

EN

回答 1

Stack Overflow用户

发布于 2011-06-29 02:23:10

问题是ComputeHash返回的是字节数组,而不是字符串。您需要以某种方式将该字节数组转换为字符串。例如,您可以使用Base64编码:

代码语言:javascript
复制
string[] args = { "login", Convert.ToBase64String(saltedHash) };

但编码需要是进程所需的任何编码。它很可能会使用十六进制编码的形式,例如

代码语言:javascript
复制
string hex = BitConverter.ToString(saltedHash).Replace("-", "");
string[] args = { "login", hex };
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6511235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档