0
我正在嘗試創建一個控制檯或窗體,將文件拖放到它們各自的.exe上 程序將獲取該文件並對其進行散列,然後將剪貼板文本設置爲可靠生成的散列。從命令行參數獲取散列
這是我的代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.Windows.Forms;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string path = args[0];
StreamReader wer = new StreamReader(path.ToString());
wer.ReadToEnd();
string qwe = wer.ToString();
string ert = Hash(qwe);
string password = "~" + ert + "~";
Clipboard.SetText(password);
}
static public string Hash(string input)
{
MD5 md5 = MD5.Create();
byte[] inputBytes = Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2"));
}
return sb.ToString();
}
}
}
當我得到釋放的單個.exe,以及將文件拖放到它,我得到某種線程錯誤 - 我不能提供它,因爲它是在控制檯中,不在vb2010中。感謝您的幫助
如果你只是從*控制檯運行程序*,剛好路過的文件名作爲參數,會發生什麼?這樣你應該得到完整的堆棧跟蹤,你可以將它複製並粘貼到問題中。請注意,您的代碼無論如何都是有缺陷的,因爲您不應該首先將它作爲字符串讀取 - 只需調用傳入流中的「ComputeHash」即可。 –
@ Jon Skeet - 當然,你能回答嗎? – Dean
那麼你堅持哪一點? –