Thứ Năm, ngày 01 tháng 7 năm 2010

// // Leave a Comment

Quick MD5 C# Application

Bỗng dưng nghĩ rằng việc mà người ta cho mình mã băm của các file được truyền tải trên mạng, ừ thì nó cho là thế. Nhưng về bản thân t không biết kiểm tra nó thế nào, nhìn bằng mắt à hay đếm từng ký tự một. Thấy cũng thật bất tiện, thôi thì nó cho cả mã băm đây rồi chắc là hàng xịn --> không thèm kiểm tra nữa
Chỉ với lý do đơn giản thế thôi, mà tớ cũng nghĩ ra được trò để viết rồi :D, vậy thì mọi người có ý tưởng gì, chưa thật hay, hoặc nghĩ nó bõ gì thèm làm, mà làm rồi thì ai dùng (phải làm lớn thì mới lên chuyện chứ). Không hẳn thế, việc một sản phẩm made in tự tui đã là hạnh phúc lắm rồi chạy được, dùng được, trước tiên là phục vụ mục đích bản thân, còn việc được nhiều người sử dụng nữa thì còn gì hơn thế nữa.
Tớ post bài này lên đây, cũng vừa có nghĩa là đem khoe, mặt khác cũng giúp được những ai đã và đang học lập trình mà chưa có sản phẩm cho riêng mình, thì đây là một ứng dụng cho mọi người tham khảo, để xem cách thiết kế chương trình, cách thức hoạt động ra sao, bắt lỗi, sự kiện trong quá trình hoạt động.
Ban đầu tớ chỉ có ý tưởng là check mã MD5 thôi, nên nó có tên là QuickMD5, nghĩa là ta có thể lấy mã băm MD5 một cách dễ dàng nhất. Nhưng trong .Net sẵn có các thư viện tính mã SHA-1, SHA-2, nên tiện thể thì nhét chung chúng nó vào một thể
Nếu như bạn cũng thường xuyên tải xuống và kiểm tra các ứng dụng có thể thực thi thì nó có thể là một công cụ hữu ích cho bạn...

Dưới đây là một vài hình ảnh về chương trình và các tính năng mà nó cung cấp cho bạn
Quick MD5
Giao diện chính của chương trình
Tính năng chính của chương trình đó là đọc thông tin file, hiển thị các mã băm của nó: MD5, SHA-1, SHA-256, SHA-512; Cho phép bạn sao chép riêng từng mã hoặc tất cả, và tính năng phụ cũng là vấn đề mà t đã nói từ đầu, đó là cho phép người dùng so sánh mã MD5, SHA-1, SHA-256 hay SHA-512 sẵn có.
Giả sử bạn thường phải tính mã băm này để kiểm tra hay thi thoảng cần dùng, mà không muốn vào tận thư mục (ồ chứa) để mở ứng dụng này lên. Nó cho phép bạn thêm vào context menu khi bạn click phải chuột lên các đối tượng trong windows explorer. Đây chỉ là cách sử lý thêm phần mở rộng vào trong regedit của windows thôi. Vậy thì chỉ cần phải chuột lên file tập tin và chọn Quick MD5, thì ứng dụng tự động được khởi chạy và cho bạn các mã băm của nó

Để thêm được tuỳ chọn này bạn chỉ cần chạy nó dưới tài khoản quản trị mới được, còn tài khoản người sử dụng thì nó không cho phép ứng dụng tác động lên Regedit. Việc làm này chỉ cần thực hiện một lần cho những lúc tháo hoặc gỡ menu truy cập nhanh

Để kiểm tra mã băm nào đó: MD5, SHA-1 hay SHA-2, thì bạn chỉ việc sao chép (copy) mã băm tương ứng muốn kiểm tra vào Clipboard, xong tiến hành chọn menu Compare trong ứng dụng. Nếu đầu vào tương ứng với mã băm nào thì menu item tương ứng sẽ được sáng lên, ngược lại thì tối đi không cho người sử dụng click linh tinh.

Sau đó một thông điệp (message) hiện ra, cho bạn biết là nó có trùng (khớp với mã tương ứng đang tồn tại trong textbox hay không) Your code matches --> Mã trùng khớp, khác thì --> Your code not matches

Bạn có thể down chương trình về xem thử tại đây, mã nguồn chương trình ở phía dưới. Có gì thì mọi người cho ý kiến tại đây luôn
http://www.mediafire.com/download.php?znyt0zdyzig
Các kỹ thuật được áp dụng trong ứng dụng này, sơ đẳng vẫn là xử lý lớp đối tượng, sử dụng thư viện và api. Ứng dụng đa luồng trong bài viết trước cũng được xử lý, do khi tính toán mã băm nếu bạn không cho nó chạy ở một luồng khác thì, chương trình chính phải chờ đợi, dẫn đến hiện tượng đơ. Thường thì người sử dụng thấy ứng dụng của họ đơ là bật task manager lên là tắt thôi, vì thế ta nên tránh trường hợp này

Đây là kết quả thu được, mã băm của chương trình
MD5:  D890A22E457562435859AE238C8F4C35
SHA-1:  428E74B1E12B47ED516185CF3FCE51A81D2A2B16
SHA-256: 34E464043B9EDE3E2CD75CBDD1C356517FFA6B8E6A056BBA37789AA5B231BF8C
SHA-512: 70488DC262B156D473358089A0EC17A20129BFA56281B109EB7A4BA750F3B473573D152DB98EC4DF21A6858672985E027742395C30A892076AADEC3B9642009F
Kiểm tra chạy thử trên Windows Xp thì chương trình gặp một số lỗi linh tinh mặc dù đã có framework 3.5 chứa namespace System.Core; Mà không biết tại sao nó lại không tính được mã SHA-2. Nên mọi người tải source của chương trình tại đây về bug thử xem là tại sao nhé
http://www.mediafire.com/download.php?oungjjxyi1y

0 comments: