73 lines
2.5 KiB
C#
73 lines
2.5 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Net.Http;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Text.Json;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace Writer
|
|
{
|
|
public partial class MainForm : Form
|
|
{
|
|
private static readonly HttpClient http = new HttpClient();
|
|
private const string ServerUrl = "http://localhost:5000";
|
|
|
|
public MainForm()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void btnBrowse_Click(object sender, EventArgs e)
|
|
{
|
|
using var ofd = new OpenFileDialog();
|
|
if (ofd.ShowDialog() == DialogResult.OK)
|
|
{
|
|
txtFile.Text = ofd.FileName;
|
|
}
|
|
}
|
|
|
|
private async void btnWrite_Click(object sender, EventArgs e)
|
|
{
|
|
var file = txtFile.Text;
|
|
if (string.IsNullOrWhiteSpace(file) || !File.Exists(file))
|
|
{
|
|
MessageBox.Show("请选择有效的文件。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
return;
|
|
}
|
|
var upload = txtUpload.Text ?? string.Empty;
|
|
var download = txtDownload.Text ?? string.Empty;
|
|
try
|
|
{
|
|
var sha = await Task.Run(() => ComputeSha256(file));
|
|
var payload = new { sha = sha, upload_code = upload, download_code = download };
|
|
var content = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json");
|
|
var resp = await http.PostAsync(ServerUrl + "/write", content);
|
|
if (resp.IsSuccessStatusCode)
|
|
{
|
|
MessageBox.Show("写入暗码成功", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("写入失败: " + await resp.Content.ReadAsStringAsync(), "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("发生错误: " + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
private static string ComputeSha256(string filePath)
|
|
{
|
|
using var sha = SHA256.Create();
|
|
using var stream = File.OpenRead(filePath);
|
|
var hash = sha.ComputeHash(stream);
|
|
var sb = new StringBuilder();
|
|
foreach (var b in hash) sb.Append(b.ToString("x2"));
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|