计算文件的MD5值上传到服务器 下载验证文件是否被篡改
2013-02-17 21:27
429 查看
using System;
using System.Windows.Forms;
using System.Security.Cryptography;
using System.IO;
namespace 计算文件的MD5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//创建与服务器的连接
FtpClient fc = new FtpClient("127.0.0.1","test","123");
//上传本地文件到服务器命名为02...文件
fc.Upload(new FileInfo("textFilePath.Text"), "02" + DateTime.Now.ToString("yyyyMMdd")+".xls");
//获取内容的MD5
string md5 = MD5Value("textFilePath.text");
//获取文件的MD5加上密钥之后的新的MD5
string newMD5 = GetMD5(md5+"tianwang");//文件的MD5加上密钥
//流处理,将新的MD5值写入文本文件
File.WriteAllText(@"c:\02" + DateTime.Now.ToString("yyyyMMdd") + ".text",newMD5);
//上传文本文件到远程服务器
fc.Upload(new FileInfo(@"c:\02" + DateTime.Now.ToString("yyyyMMdd") + ".text"), @"c:\02" + DateTime.Now.ToString("yyyyMMdd") + ".text");
}
/// <summary>
/// 计算文件MD5值
/// </summary>
/// <param name="str">需要计算的文件路径</param>
/// <returns>MD5值</returns>
public static string MD5Value(String filepath)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] md5ch;
using (FileStream fs = File.OpenRead(filepath))
{
md5ch = md5.ComputeHash(fs);
}
md5.Clear();
string strMd5 = "";
for (int i = 0; i < md5ch.Length - 1; i++)
{
strMd5 += md5ch[i].ToString("x").PadLeft(2, '0');
}
return strMd5;
}
/// <summary>
/// 计算字符串的MD5
/// </summary>
/// <param name="sDataIn"></param>
/// <returns></returns>
public static string GetMD5(string sDataIn)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] bytValue, bytHash;
bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn);
bytHash = md5.ComputeHash(bytValue);
md5.Clear();
string sTemp = "";
for (int i = 0; i < bytHash.Length; i++)
{
sTemp += bytHash[i].ToString("X").PadLeft(2, '0');
}
return sTemp.ToLower();
}
/// 判断服务器上的文件是否被篡改,如果没有则读取
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//获取当前系统时间
string datestr = DateTime.Now.ToString("yyyyMMdd");
FtpClient fc = new FtpClient("127.0.0.1","test","123");
//将服务器上个文件下载下来
fc.Download("02" + datestr + ".xls", @"c:\02" + datestr + ".xls");
//计算下载下来的xls文件的MD5值+密钥
string md5 = MD5Value(@"c:\02" + datestr + ".xls");
string newMD5 = GetMD5(md5 + "tianwang");
//下载服务器上的保留的MD5txt文件MD5的值
fc.Download("02" + datestr + ".txt", @"c:\t.text");
string txt = File.ReadAllText(@"c:\t.txt");
//检查文件是否被篡改
if(txt!=newMD5)
{
MessageBox.Show("文件被篡改");
return;
}
using(FileStream stream=File.OpenRead(@"c:\02.xls"))
{
HSSFWorkbook wb = new HSSFWorkbook(stream);
HSSFSheet sheet = wb.GetSheetAt(0);
MessageBox.Show(sheet.LastRowNum.ToString());
}
}
}
}
using System.Windows.Forms;
using System.Security.Cryptography;
using System.IO;
namespace 计算文件的MD5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//创建与服务器的连接
FtpClient fc = new FtpClient("127.0.0.1","test","123");
//上传本地文件到服务器命名为02...文件
fc.Upload(new FileInfo("textFilePath.Text"), "02" + DateTime.Now.ToString("yyyyMMdd")+".xls");
//获取内容的MD5
string md5 = MD5Value("textFilePath.text");
//获取文件的MD5加上密钥之后的新的MD5
string newMD5 = GetMD5(md5+"tianwang");//文件的MD5加上密钥
//流处理,将新的MD5值写入文本文件
File.WriteAllText(@"c:\02" + DateTime.Now.ToString("yyyyMMdd") + ".text",newMD5);
//上传文本文件到远程服务器
fc.Upload(new FileInfo(@"c:\02" + DateTime.Now.ToString("yyyyMMdd") + ".text"), @"c:\02" + DateTime.Now.ToString("yyyyMMdd") + ".text");
}
/// <summary>
/// 计算文件MD5值
/// </summary>
/// <param name="str">需要计算的文件路径</param>
/// <returns>MD5值</returns>
public static string MD5Value(String filepath)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] md5ch;
using (FileStream fs = File.OpenRead(filepath))
{
md5ch = md5.ComputeHash(fs);
}
md5.Clear();
string strMd5 = "";
for (int i = 0; i < md5ch.Length - 1; i++)
{
strMd5 += md5ch[i].ToString("x").PadLeft(2, '0');
}
return strMd5;
}
/// <summary>
/// 计算字符串的MD5
/// </summary>
/// <param name="sDataIn"></param>
/// <returns></returns>
public static string GetMD5(string sDataIn)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] bytValue, bytHash;
bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn);
bytHash = md5.ComputeHash(bytValue);
md5.Clear();
string sTemp = "";
for (int i = 0; i < bytHash.Length; i++)
{
sTemp += bytHash[i].ToString("X").PadLeft(2, '0');
}
return sTemp.ToLower();
}
/// 判断服务器上的文件是否被篡改,如果没有则读取
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//获取当前系统时间
string datestr = DateTime.Now.ToString("yyyyMMdd");
FtpClient fc = new FtpClient("127.0.0.1","test","123");
//将服务器上个文件下载下来
fc.Download("02" + datestr + ".xls", @"c:\02" + datestr + ".xls");
//计算下载下来的xls文件的MD5值+密钥
string md5 = MD5Value(@"c:\02" + datestr + ".xls");
string newMD5 = GetMD5(md5 + "tianwang");
//下载服务器上的保留的MD5txt文件MD5的值
fc.Download("02" + datestr + ".txt", @"c:\t.text");
string txt = File.ReadAllText(@"c:\t.txt");
//检查文件是否被篡改
if(txt!=newMD5)
{
MessageBox.Show("文件被篡改");
return;
}
using(FileStream stream=File.OpenRead(@"c:\02.xls"))
{
HSSFWorkbook wb = new HSSFWorkbook(stream);
HSSFSheet sheet = wb.GetSheetAt(0);
MessageBox.Show(sheet.LastRowNum.ToString());
}
}
}
}
相关文章推荐
- 计算文件的MD5值上传到服务器 下载验证文件是否被篡改
- 计算文件的MD5值上传到服务器 下载验证文件是否被篡改
- 计算文件的MD5值上传到服务器 下载验证文件是否被篡改
- 微信小程序业务域名配置:校验文件验证失败,请下载校验文件,上传到服务器指定的目录
- loadrunner脚本,从FTP服务器上上传和下载文件
- 支付宝获取远程服务器ATN结果,验证是否是支付宝服务器发来的请求是超时导致交易签名被篡改
- Android与Asp.Net Web服务器的文件上传下载BUG汇总[更新]
- [已上传demo]使用HttpHandler做文件过滤器,验证下载文件权限
- 验证上传文件类型是否属于图片格式
- 记录一下:上传到服务器上的pdf 文件直接下载而非在浏览器里打开
- linux下ssh上传下载文件到服务器
- 如何上传和下载的网络服务器上的文件
- FTP服务器上的文件上传、下载、删除操作
- java做的比较完善的FTP上传下载文件服务器源码
- 将TXT文件上传的服务器上并将读取内容绑定到DataTable进行验证
- XManager用Xshell上传和下载linux服务器的文件
- java 简单的文件上传下载服务器模型(NIO 版本)
- 使用批处理文件在FTP服务器 上传下载文件
- 编写高质量代码改善C#程序的157个建议——建议115:通过HASH来验证文件是否被篡改
- MacOS 使用Iterm2搭配lrzsz从服务器上传下载文件