NEWS

[C#] Checksum File trong lập trình Csharp

[C#] Checksum File trong lập trình Csharp
Đăng bởi: Thảo Meo - Lượt xem: 8262 14:45:11, 03/05/2019C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách CheckSum File C# (Kiểm tra tập tin có toàn vẹn hay không) trong lập trình C#.

[C#] Tutorial CheckSum File MD5, Sha1, Sha256

Vậy Checksum file là gì? Tại sao cần phải checksum file?

checksum

+   Checksum là một phần mềm và được sử dụng để đảm bảo tính toàn vẹn của một tập tin sau khi đã được truyền từ một thiết bị lưu trữ khác.

Có thể là thông qua Internet hoặc đơn giản là giữa hai máy tính trên cùng một mạng. Dù bằng cách nào, nếu bạn muốn đảm bảo rằng các tập tin truyền là chính xác giống như các tập tin nguồn, bạn có thể sử dụng checksum.

Để xác minh tập tin toàn vẹn, người dùng sử dụng một chương trình checksum calculator và so sánh chúng với nhau để đảm bảo rằng chúng khớp với nhau.

+   Checksum được sử dụng không chỉ để đảm bảo vấn đề truyền tải bị hỏng, mà còn để đảm bảo rằng các tập tin đã không bị giả mạo. Khi một thuật toán checksum tốt được sử dụng, thậm chí một sự thay đổi nhỏ về các tập tin sẽ dẫn đến một giá trị checksum hoàn toàn khác nhau.

Hiện nay có rất nhiều mã checksum như SHA-1, SHA-256, MD4, MD5, CRC32 ,...nhưng phổ biến hiện nay được nhiều người biết đến là MD5 và SHA1.

+   Mã SHA1 đang được Microsoft dùng để xác nhận tính toàn vẹn với người dùng.

Trong bài viết này mình sẽ hướng dẫn các bạn viết ứng dụng C# để CheckSum file với các mã phố biến là MD5, SHA1 và SHA256.

Đầu tiên, mình giới thiệu các bạn có thể CheckSum file từ tập lệnh của công cụ Windows PowerShell.

Các bạn có thể xem hình ảnh bên dưới mình checkSum file bằng lệnh:  Get-FileHash của Power Shell

Từ Giao diện dòng lệnh, các bạn gõ vào các lệnh sau:

Get-FileHash "C:\Users\nguyenthao\Desktop\demo.txt" -Algorithm MD5
Get-FileHash "C:\Users\nguyenthao\Desktop\demo.txt" -Algorithm SHA1
Get-FileHash "C:\Users\nguyenthao\Desktop\demo.txt" -Algorithm SHA256

Kết quả chúng ta, sẽ có được như hình bên dưới:

check_sum_file_powershell

Và bây giờ, mình sẽ vào phần chính hướng dẫn các bạn lập trình CheckSum file trên C#:

Giao diện Checksum file C#:

check_sum_file_csharp

Đầu tiên, các bạn tạo cho mình một class với tên HashFile.cs

Trong tập tin này, sẽ có 3 function check hash file: md5, sha1 và sha256

Source code file HashFile.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace CheckSumFile
{
    class HashFile
    {      
        public static string MD5(string path)
        {
            using (var md5 = System.Security.Cryptography.MD5.Create())
            {
                using (var stream = File.OpenRead(path))
                {
                    return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", string.Empty).ToLower();
                }
            }
        }
     
        public static string SHA1(string path)
        {
            using (var cryptoProvider = new SHA1CryptoServiceProvider())
            {
                var stream = File.OpenRead(path);
                string hash = BitConverter
                    .ToString(cryptoProvider.ComputeHash(stream)).Replace("-", "");
                return hash.ToLower();
            }
        }
      
        public static string SHA256(string path)
        {
            using (FileStream stream = File.OpenRead(path))
            {
                SHA256Managed sha = new SHA256Managed();
                byte[] hash = sha.ComputeHash(stream);
                return BitConverter.ToString(hash).Replace("-", String.Empty);
            }
        }
    }
}

 

Source code cho Form1, khi chúng ta bấm vào nút CheckSum file

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

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

        private void Form1_Load(object sender, EventArgs e)
        {
           
        }

        private void btn_chonfile_Click(object sender, EventArgs e)
        {
            using(OpenFileDialog dialog = new OpenFileDialog())
            {
                if(dialog.ShowDialog() == DialogResult.OK)
                {
                    txt_input.Text = dialog.FileName;
                }
            }
        }

        private void btn_checksum_Click(object sender, EventArgs e)
        {
            lbl_md5.Text = HashFile.MD5(txt_input.Text);
            lbl_sha1.Text = HashFile.SHA1(txt_input.Text);
            lbl_sha256.Text = HashFile.SHA256(txt_input.Text);
        }
    }
}

THANKS FOR WATCHING!

 

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[C#] Checksum File trong lập trình Csharp
Đăng bởi: Thảo Meo - Lượt xem: 8262 14:45:11, 03/05/2019C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.