Chào mừng các bạn
»»-((¯`·(¯`vŽ¯)--»*** MasterSpy *** «--(¯`vŽ¯)·`¯))-«« - Thuật toán - Cấu trúc dữ liệu CRC (Cyclic Redundancy Check)
ღLONELYღ
  Home
  => Cách tạo một trang web cho riêng mình !
  => Một số địa chỉ trang web hay dành cho bạn, ....cho tôi !
  => 5 bước cơ bản để diệt tận gốc Spyware
  => 10 điều “lính mới” nên biết
  => 10 bước để lập kế hoạch cho nghề nghiệp tương lai của bạn
  => 15 LỜI KHUYÊN HỌC TIẾNG ANH
  => 21 kho lưu dữ liệu miễn phí trên Internet
  => PHƯƠNG PHÁP XỬ LÝ LOGIC VỊ TỪ
  => 50 cuốn sách văn học cần đọc
  => Những bài học từ Adam Khoo
  => Dùng Admodify.net để quản trị và phục hồi Exchange 2003
  => Cuộc đời của Albert Einstein
  => Cảnh giác với hacker và keylogger!
  => Phần mềm miễn phí giúp bảo vệ computer khi online
  => Học thi - cần ăn uống hợp lý
  => Hacker “oánh” mỗi PC chỉ mất 39 giây
  => Xác định nguyên nhân máy tính tự khởi động !
  => Diệt virus Autorun
  => Bấm dây mạng !
  => Bảo vệ mắt khi sử dụng máy tính !
  => Blog ra đời như thế nào?
  => Bài tập Pascal kiểu bản ghi !
  => Hướng dẫn ôn tập lập trình Pascal căn bản !
  => Cách Diệt Virus
  => Cách gỡ bỏ thủ công Symantec Antivirus an toàn (Phần I)
  => Tổng hợp các lệnh ngoài DOS
  => Cài HIREN BOOTCD vào ổ cứng để cứu hộ
  => Cài windows media player 11 ( không cần active window)
  => Cấu hình mạng ADSL cho người dùng tại nhà
  => Thiết Lập Sevice trong windows XP (giúp máy chạy nhanh hơn)
  => Giới Thiệu Centos
  => Chẩn đoán lỗi của màn hình !
  => Chọn DNS truy cập mạng !
  => Kinh nghiệm phòng chống virus, spyware
  => Trắc nghiệm nghiệp vụ kế toán bằng tiếng Anh !
  => Hướng dẫn chụp hình bằng webcam
  => Tổng Hợp Code Dùng Trong Việc Tạo BLOG
  => Công dụng của các dịch vụ trong Windows
  => Sử dụng Popcap game mãi mãi !
  => Cử nhân CNTT không làm CNTT
  => Tìm hiểu DNS.Các bước thiết lập khi mới đăng ký tên miền
  => Làm DNS server online
  => Nội dung định nghĩa về vật chất của Lê Nin
  => Đọc và ... suy nghĩ !
  => Đôi điều về bảo mật hệ thống mạng trong công ty!
  => Khắc phục lỗi 999 Error của Yahoo
  => Chuyển dữ liệu của ổ C từ FAT32 thành NTFS
  => Gỡ password CMOS bằng cách nào?
  => Phần I: Cơ bản về lỗi "màn hình xanh" trong Windows
  => Tổng quan về Group Policy - từ đơn giản đến phức tạp !
  => Gửi nhiều file qua Yahoo Mail
  => Từ XP cài Hacao Linux 2.16 Pro (file ISO) vào đĩa cứng (LiveCD)
  => Chịu thuế và không chịu thuế
  => Hội thảo qua mạng với NetMeeting
  => HOST Free
  => Hướng dẫn download trên megaupload
  => KGB nén File từ 450MB còn 1.43MB rất tiện chia sẻ file trên mạng
  => Khắc phục rớt mạng liên tục
  => Kiến trúc Oracle
  => Thành công trên giảng đường đại học
  => Kỹ thuật Photoshop cơ bản !
  => Kinh nghiệm học tiếng ANH
  => KInh nghiệm học TOÁN CAO CẤP
  => Đôi điều về quá trình làm luận văn (Phần 2)
  => Làm theme cho Blog 360
  => Chia sẻ những điều học được từ cách làm việc theo nhóm
  => Vạch kế hoạch cho tương lai
  => Các Lệnh Cơ Bản trong LINUX
  => Lịch sử các nước ĐẾ QUỐC
  => Lịch sử Việt Nam
  => Links những trang web hay
  => Tạo mail server online bằng IP Động
  => Tự làm giao diện cho Yahoo Mash!
  => Mấy điểm cần tránh
  => Hỏi về IPHONE
  => Máy tính không khởi động từ ổ đĩa cứng!...?
  => MIÊU TẢ SẢN PHẨM MÁY IN hp1320
  => Phá Deep Freeze - Cướp lấy password!!!
  => Những "tuyệt chiêu" chọn mua laptop cũ
  => NHỮNG NGUYÊN TẮC CƠ BẢN CỦA BÁO CHÍ
  => Tìm hiểu nhân của hệ điều hành Linux
  => Sửa lỗi NTLDR is missing
  => Ổ cứng chóng hỏng vì... điều hòa nhiệt độ
  => Những phím tắt thông dụng trong Photoshop 7.0
  => Phím tắt trong WORDS
  => Bí mật của PHỤ NỮ
  => Hướng dẫn post hình lên mạng, và 1 số website để upload hình
  => Chương trình quản lý số điện thoại !
  => Quản lý các mạng Windows dùng script - Phần 2: Hoàn chỉnh script -
  => Cấu hình cho máy in N2500
  => Xóa nick của mình trong Friend List của người khác
  => Rollback Rx Pro:
  => User và pass của một số router
  => Giải pháp sao lưu trực tuyến miễn phí (Phần cuối)
  => Vài điều về Scanner
  => Chọn hệ điều hành của bạn
  => Làm server online tận dụng đường truyền ADSL
  => Thuật toán - Cấu trúc dữ liệu
  => So sánh Oracle và SQL Server ?
  => Cấu hình các công nghệ bảo vệ mạng Windows XP SP2 trên một máy tính
  => Tổng quan về tiết kiệm điện khi sử dụng máy tính !
  => Phần IV: Xử lý sự cố phần cứng
  => CÁC VẤN ĐỀ VỀ SỨC KHỎE PHỤ NỮ
  => Sử dụng phím tắt với Internet Explorer 7
  => SỰ PHÁT TRIỂN CỦA SINH VẬT
  => Nguồn gốc máng cỏ giáng sinh
  => Sưu tầm câu đố !
  => SVCHOST
  => Phòng chống virus cho mạng máy tính doanh nghiệp: kinh nghiệm thực tế
  => Các lệnh căn bản trong ngôn ngữ html
  => Sức mạnh của card đồ họa !
  => Cách tải Nhạc nét
  => Triết học và tâm sự của các nhà giáo
  => Phát triển chiều cao
  => Tăng tốc toàn bộ máy tính bằng tay
  => Tăng tốc WinXP
  => Chống mất cắp cho laptop với Laptop Alarm
  => Tạo file ghost!
  => Tạo một CSS layout từ một bản thiết kế (Phần 1 đến 8)
  => Tạo nick ảo trong Yahoo Messenger
  => Tết Đoan Ngọ bắt đầu từ giữa trưa
  => Thói quen tốt: Nghĩ vậy mà không phải vậy
  => Thomas Edison & những phát minh vĩ đại -
  => Windows Vista: các thủ thuật nhỏ khi sử dụng
  => Thủ thuật Blog 360
  => Thủ thuật Internet Explorer 7
  => Thủ thuật tăng tốc cho Windows
  => Thủ thuật Visual basic
  => Thủ thuật Yahoo! Messenger
  => Yahoo Messenger
  => Khám phá mạng xã hội Yahoo! Mash
  => Mẹo tìm kiếm
  => Tìm kiếm trong Excel
  => Tóc hợp khuôn mặt
  => Tokyo - Một chuyến đi
  => Mười quy luật then chốt về Bảo mật
  => Tổng hợp tất cả các kỹ thuật vượt tường lửa
  => Trang trí USB
  => Thuật toán - Cấu trúc dữ liệu CRC (Cyclic Redundancy Check)
  => Các Tuyệt kỹ khiến phái nữ phải ngã lòng
  => CÁCH UP ẢNH QUA HOST TẠI DIỄN ĐÀN
  => Quản lý danh sách bạn chat trong Yahoo! Messenger
  => Error Doctor 2007
  => TuneUp Utilities® 2007
  => Bộ gõ tiếng Việt: Unikey
  => Hướng dẫn viết bài
  => Tường lửa mới trong Windows Vista và Windows Server Longhorn
  => Web 2.0 không chỉ là công nghệ
  => Các website hữu ích về du học bậc sau đại học tại Hoa Kỳ
  => Wi-fi và an toàn thông tin
  => Thuật toán - Cấu trúc dữ liệu So khớp chuỗi với các ký tự wildcard
  => Xóa địa chỉ và homepage
  => USB không cho ghi
  => Yêu cầu của Quản trị mạng
  => Cách Add Feed trong Blog 360
  => Cách tạo theme trong suốt
  => Đề cương KT-Chính Trị
  Contact
  Guestbook
  Story
  Kiếm tiền thật dễ dàng

Biển xanh ... cát trắng

 

Thuật toán - Cấu trúc dữ liệu
CRC (Cyclic Redundancy Check)
Trong quá trình sử dụng máy tính, chắc hẳn bạn đã không ít lần cảm thấy khó chịu (đặc biệt là khi bạn đã tốn hàng giờ để download một tập tin quan trọng) khi gặp phải thông báo lỗi của WinZip từ chối xả nén một tập tin vì phép kiểm CRC thấy bại. Tại sao các phần mềm nén lại phải thực hiện phép kiểm tra CRC mỗi khi nó xả nén một tập tin? Thực ra, CRC là một phương pháp nhằm kiểm tra xem nội dung một tập tin có bị thay đổi hay không (đặc biệt là khi tập tin này được truyền đi trên mạng). Điều này cực kỳ quan trọng đối với các phần mềm nén vì chỉ cần sai lệch một byte cũng đủ để làm sai lệch hoàn toàn nội dung các tập tin bị nén.
Ý tưởng về CRC cũng không quá phức tạp. Trong bài viết này, chúng ta sẽ xem xét qua một thuật toán phát sinh CRC đơn giản.
Trước tiên, để đơn giản hóa bài toán mà không làm mất tính tổng quát, ta sẽ xem nội dung tập tin F cần kiểm tra như là một con số nguyên khổng lồ trong đó, byte có nghĩa nhất là byte đầu tiên của tập tin, byte tiếp theo là byte có nghĩa kế tiếp và cứ thế cho đến byte cuối cùng của tập tin là byte ít có nghĩa nhất. Hay nói một cách khác, tập tin cần được kiểm tra F sẽ được đại diện bởi một con số nguyên SF mà giá trị của nó là :
 (1)
trong đó b[i] là byte thứ i của tập tin.
Chẳng hạn, giả sử tập tin cần kiểm tra có nội dung là TEST thì giá trị SF của nó sẽ là :
SF = 84´2563 + 69´2562 + 83´2561 + 84 = 1 413 829 716
(trong đó mã ASCII của ký tự các T, E và S lần lượt là 84, 69, 83)
Giá trị CRC của một tập tin F là một số nguyên 2 byte sao cho với một hằng số nguyên cho trước G, đẳng thức sau được thỏa mãn (MOD là toán tử chia lấy phần dư, giống toán tử % của C, chẳng hạn 5 mod 2 = 1 vì   5 chia cho 2 còn dư 1 )
(SF ´ 2562 + CRC) MOD G = 0    (2)
Người ta thường chọn G là một số nguyên tố.
Giá trị CRC thỏa (2) có thể được xác định bằng công thức sau :
CRC =  G – ( (SF ´ 2562) MOD G )    (3)
Khi truyền tập tin F sang nơi khác, ta đồng thời truyền cả giá trị CRC sang nơi nhận. Nơi nhận sẽ nhận được một tập tin có nội dung là Fnhận­ và giá trị
CRC­nhận. Áp dụng công thức (1) với Fnhận ­ để tính ra giá trị số nguyên đại diện cho Fnhận là S’F
Tại nơi nhận, phép kiểm tra CRC được thực hiện bằng cách áp dụng công thức (2) đối với S’F và giá trị CRCnhận, nghĩa là kiểm tra đẳng thức:
(S’F ´ 2562 + CRCnhận) MOD G = 0 (4)
Nếu (4) sai thì chắc chắn Fnhận ¹ F. Ngược lại, nếu (4) đúng thì không chắc chắn Fnhận ¹ F nhưng cũng không chắc chắn là Fnhận  = F !!!
Điều này mới nghe có vẻ rất ngạc nhiên vì nếu đúng như vậy thì phương pháp này chẳng có giá trị gì cả ! Nhưng may mắn là, trong điều kiện thực tế, khi (3) đúng thì khả năng xảy ra trường Fnhận ¹ F là cực kỳ thấp, thấp đến mức mà ta có thể yên tâm là nó không thể xảy ra. Cơ sở cho khẳng định này là các sai sót trong quá trình truyền tập tin thường xảy ra ngẫu nhiên và số bit bị sai sót thường ít (1-2 bit). Trong khi đó, để xảy ra trường hợp Fnhận  ¹ F và đẳng thức (3) được thỏa mãn cùng lúc, nội dung của Fnhận phải tuân theo một quy luật khá đặc biệt và số bit bị thay đổi giá trị cũng thường nhiều. Sự ngẫu nhiên khó có thể tạo ra một sai sót đặc biệt như vậy.
Cách cài đặt thuật toán phát sinh và kiểm tra CRC cho một tập tin cũng khá rõ ràng. Tuy nhiên, bạn đọc nên lưu ý đến vấn đề tràn số khi tính tổng SF. Để tránh điều này, bạn có thể sử dụng tính chất sau của toán tử mod : (A + B) MOD C = ( (A MOD C) + B ) MOD C
Đoạn chương trình minh họa sau dùng để phát sinh giá trị CRC của một chuỗi ký tự F (biến value sẽ giữ giá trị CRC khi đoạn chương trình kết thúc).
len = strlen(F);
value = 0;
// Tính giá trị số nguyên đại diện cho F dùng công thức (1)
for (i = 0; i < len; i++) {
  value = value << 8;
  value += F[i];
  value = value % G;
}
// Tính giá trị CRC dùng công thức (3)
value = value << 16;
value = value % G;
if (value) value = G - value;
      ...
 
 
Today, there have been 23 visitors (105 hits) on this page!
Đến với thành phố biển Vũng Tàu This website was created for free with Own-Free-Website.com. Would you also like to have your own website?
Sign up for free