Khi nào CRC thích hợp để sử dụng hơn MD5 / SHA1?


130

Khi nào thì thích hợp sử dụng CRC để phát hiện lỗi so với các hàm băm hiện đại hơn như MD5 hoặc SHA1? Là trước đây dễ dàng thực hiện trên phần cứng nhúng?

Câu trả lời:


114

CRC hoạt động tốt để phát hiện các lỗi ngẫu nhiên trong dữ liệu có thể xảy ra, ví dụ, từ nhiễu mạng, nhiễu đường truyền, méo, v.v.

CRC tính toán ít phức tạp hơn nhiều so với MD5 hoặc SHA1. Sử dụng hàm băm như MD5 có thể là quá mức cần thiết để phát hiện lỗi ngẫu nhiên. Tuy nhiên, sử dụng CRC cho bất kỳ loại kiểm tra bảo mật nào sẽ kém an toàn hơn nhiều so với chức năng băm phức tạp hơn như MD5.

Và vâng, CRC dễ thực hiện hơn trên phần cứng nhúng, thậm chí bạn có thể nhận được các giải pháp đóng gói khác nhau cho việc này trên IC.


1
@gili: bạn luôn có thể chỉ cần xor các từ với nhau để có được một từ kết quả duy nhất.
Bịt mắt

2
@Dustin: Bạn hoàn toàn chính xác trong câu trả lời của mình, nhưng có lẽ nên xem xét việc thay đổi "CRC tính toán hiệu quả hơn nhiều" thành "CRC dễ tính toán hơn nhiều"? Các thuật toán MD5 / SHA-1 rất phức tạp, nhưng IMO không thực sự "không hiệu quả".
Coxy

1
@coxymla bạn nói đúng, từ tôi nên dùng là "phức tạp" chứ không "không hiệu quả". Cảm ơn!
định nghĩa

27
Để giảm băm dài xuống còn 32 bit, chỉ cần lấy 32 bit đầu tiên.
orip

1
Nếu bảo mật là mục tiêu của bạn thì bạn không bao giờ nên sử dụng MD5, SHA-1cũng nên tránh, một số biến thể của SHA-2được khuyến nghị.
Peter

33

CRC được thiết kế để chống lại những thay đổi không chủ ý trong dữ liệu. Đó là, tốt cho việc phát hiện các lỗi vô ý, nhưng sẽ vô ích vì cách đảm bảo dữ liệu không bị xử lý độc hại.

Cũng thấy điều này .


Phần quan trọng nhất từ ​​liên kết trong câu trả lời này: "(...) ngay cả CRC 2048 bit cũng sẽ được bảo mật bằng mật mã ít hơn nhiều so với MD5 128 bit"
Marc.2377

3
Mặc dù câu trả lời vẫn đúng, MD5 và SHA1 hiện có cùng mức độ bảo mật. Nói cách khác, chỉ tốt cho việc phát hiện lỗi vô ý.
Piskvor rời khỏi tòa nhà vào

21

Tôi đã tìm thấy một nghiên cứu cho thấy mức băm CRC không phù hợp đối với các bảng băm . Nó cũng giải thích các đặc điểm thực tế của thuật toán. Nghiên cứu cũng bao gồm đánh giá các thuật toán băm khác và là một tài liệu tham khảo tốt để giữ.

Các kết luận có liên quan về CRC cho băm:

CRC32 không bao giờ được dự định để sử dụng bảng băm. Thực sự không có lý do chính đáng để sử dụng nó cho mục đích này và tôi khuyên bạn nên tránh làm như vậy. Nếu bạn quyết định sử dụng CRC32, điều quan trọng là bạn sử dụng các bit băm từ đầu đối diện với các octet chính được đưa vào. Việc kết thúc này phụ thuộc vào việc triển khai CRC32 cụ thể. Không coi CRC32 là hàm băm "hộp đen" và không sử dụng nó làm hàm băm cho mục đích chung. Hãy chắc chắn để kiểm tra từng ứng dụng của nó cho phù hợp.

CẬP NHẬT

Có vẻ như các trang web là xuống. Các kho lưu trữ internet có một bản sao mặc dù.


Liên kết bị hỏng. Có lẽ bạn có thể tự viết lời giải thích? Nếu không câu trả lời là vô ích.
ceving

Được rồi, tôi sẽ bao gồm kết luận trong câu trả lời của tôi.
Andre Luus

Thật kỳ lạ, theo điểm chuẩn ở đây , CRC thực sự làm khá tốt về tốc độ và số lần va chạm.
xương

Thực sự rất thú vị. Tôi đã phải xem qua nghiên cứu mà tôi đã liên kết lại, nhưng nếu tôi phải đoán thì đó phải là do các triển khai thử nghiệm khác nhau. Nếu tôi phải đưa ra quyết định, tôi sẽ xin lời khuyên từ nghiên cứu, nó có vẻ khoa học hơn.
Andre Luus

Theo kinh nghiệm của tôi, băm hàng triệu URL, CRC64 đã va chạm 8 lần và MD5 va chạm 5. Rõ ràng MD5 tốt hơn, nhưng CRC64 là một hàm băm tuyệt vời và nhanh hơn và đơn giản hơn nhiều.
J. Dimeo

18

Tôi đã chạy mọi dòng mã PHP này trong vòng lặp 1.000.000. Kết quả là trong các ý kiến ​​(#).

hash('crc32', 'The quick brown fox jumped over the lazy dog.');#  750ms   8 chars
hash('crc32b','The quick brown fox jumped over the lazy dog.');#  700ms   8 chars
hash('md5',   'The quick brown fox jumped over the lazy dog.');#  770ms  32 chars
hash('sha1',  'The quick brown fox jumped over the lazy dog.');#  880ms  40 chars
hash('sha256','The quick brown fox jumped over the lazy dog.');# 1490ms  64 chars
hash('sha384','The quick brown fox jumped over the lazy dog.');# 1830ms  96 chars
hash('sha512','The quick brown fox jumped over the lazy dog.');# 1870ms 128 chars

Kết luận của tôi:

  • Sử dụng "crc32b" khi bạn cần http://en.wikipedia.org/wiki/Cyclic_redundancy_check và bạn không quan tâm đến bảo mật.
  • Sử dụng "sha256" (hoặc cao hơn) khi bạn cần thêm lớp bảo mật.

  • Không sử dụng "md5" hoặc "sha1" vì chúng có:

    1. Một số vấn đề bảo mật khi bạn quan tâm đến bảo mật
    2. chuỗi băm dài hơn và chậm hơn "crc32b" khi tất cả những gì bạn cần là CRC

ý bạn là bit, không phải ký tự
esskar

Không hẳn vậy. tiếng vang băm ('crc32', 'Con cáo nâu nhanh nhẹn nhảy qua con chó lười.'); vang "413a86af", chuỗi dài 8 ký tự là gì. Btw, nó là số 32 bit được lưu ở định dạng HEX. Ví dụ: "sha256" có hàm băm 256 bit, một lần nữa được lưu dưới dạng HEX, cung cấp chuỗi dài 64 ký tự.
Martin

45
Những kết quả này rất lừa dối. Khi các thuật toán băm này được áp dụng cho một tập dữ liệu lớn ( Chiến tranh và Hòa bình thay vì "The quick brown fox jumped over the lazy dog."), bạn sẽ thấy CRC nhanh hơn MD5 bao nhiêu.
ubiquibacon

1
Có một trường hợp trung gian (kiểm tra trùng lặp trong các thư viện) trong đó MD5 / Sha1 là giải pháp chính xác: họ không cần xử lý trường hợp có đối thủ cẩn thận tạo ra va chạm băm không đáng có, nhưng họ cần xử lý các va chạm vô tình. Vì vậy: Phát hiện lỗi bit và tham nhũng: CRC32 Phát hiện va chạm trong thư viện: MD5 / SHA1 Ứng dụng bất lợi: Sha256 trở lên. Tất nhiên, nếu bạn có một thư viện với hàng tỷ mục, thì có lẽ bạn cũng sẽ cần phải tăng bit băm của mình.
Dewi Morgan

PHP? trên nền tảng ARM, mã nhúng, 16 MHz một CRC32 gồm 46 byte, có thể là 12 micro giây. Điều đó có hỗ trợ phần cứng. Ngay cả AES hỗ trợ phần cứng cũng sẽ chậm hơn hàng trăm lần. Bảng tra cứu chưa được đăng ký CRC vẫn sẽ xuất hiện trong khoảng 50 micro giây.
ilgitano


9

Tất cả phụ thuộc vào yêu cầu và mong đợi của bạn.

Dưới đây là những khác biệt ngắn gọn giữa các thuật toán hàm băm :

CRC (CRC-8/16/32/64)

  • không một thuật toán băm mật mã (nó sử dụng một hàm tuyến tính dựa trên CRC)
  • có thể tạo ra 9, 17, 33 hoặc 65 bit
  • không có ý định được sử dụng cho mục đích mã hóa vì không đảm bảo về mật mã,
  • không phù hợp để sử dụng trong chữ ký số, bởi vì nó dễ dàng đảo ngược năm 2006 ,
  • không nên được sử dụng cho mục đích mã hóa,
  • các chuỗi khác nhau có thể tạo ra sự va chạm,
  • được phát minh vào năm 1961 và được sử dụng trong Ethernet và nhiều tiêu chuẩn khác,

MD5

  • là một thuật toán băm mật mã,
  • tạo ra giá trị băm 128 bit (16 byte) (số thập lục phân 32 chữ số)
  • nó là một hàm băm mật mã, nhưng được coi là không dùng nữa nếu bạn lo lắng về bảo mật,
  • có những chuỗi đã biết có cùng giá trị băm MD5
  • có thể được sử dụng cho mục đích mã hóa,

SHA-1

  • là một thuật toán băm mật mã,

  • tạo ra giá trị băm 160 bit (20 byte) được gọi là thông báo

  • nó là một hàm băm mật mã và từ năm 2005 nó không còn được coi là an toàn nữa,

  • có thể được sử dụng cho mục đích mã hóa,

  • một ví dụ về vụ va chạm sha1 đã được tìm thấy

  • xuất bản lần đầu năm 1993 (dưới dạng SHA-0), sau đó là 1995 với tên SHA-1,

  • loạt: SHA-0, SHA-1, SHA-2, SHA-3,

    Nói tóm lại, bằng cách sử dụng SHA-1 không còn được coi là an toàn so với đối thủ cũng tài trợ, bởi vì trong năm 2005, phân tích mật mã phát hiện các cuộc tấn công trên SHA-1 điều này cho thấy nó có thể là không đủ an toàn để sử dụng liên tục Schneier . NIST Hoa Kỳ khuyên rằng các cơ quan liên bang nên ngừng sử dụng SHA1-1 cho ứng dụng yêu cầu chống va chạm và phải sử dụng SHA-2 sau NIST 2010 .

Do đó, nếu bạn đang tìm giải pháp đơn giản và nhanh chóng để kiểm tra tính toàn vẹn của tệp (chống tham nhũng) hoặc cho một số mục đích lưu trữ đơn giản về mặt hiệu suất, bạn có thể xem xét CRC-32, để băm bạn có thể xem xét sử dụng Tuy nhiên, MD5 nếu bạn đang phát triển ứng dụng chuyên nghiệp (cần bảo mật và nhất quán), để tránh mọi xác suất va chạm - hãy sử dụng SHA-2 trở lên (như SHA-3).

Hiệu suất

Một số bài kiểm tra điểm chuẩn đơn giản trong PHP:

# Testing static text.

$ time php -r 'for ($i=0;$i<1000000;$i++) crc32("foo");'
real    0m0.845s
user    0m0.830s
sys     0m0.008s

$ time php -r 'for ($i=0;$i<1000000;$i++) md5("foo");'
real    0m1.103s
user    0m1.089s
sys     0m0.009s

$ time php -r 'for ($i=0;$i<1000000;$i++) sha1("foo");'
real    0m1.132s
user    0m1.116s
sys   0m0.010s

# Testing random number. 

$ time php -r 'for ($i=0;$i<1000000;$i++) crc32(rand(0,$i));'
real    0m1.754s
user    0m1.735s
sys     0m0.012s\

$ time php -r 'for ($i=0;$i<1000000;$i++) md5(rand(0,$i));'
real    0m2.065s
user    0m2.042s
sys     0m0.015s

$ time php -r 'for ($i=0;$i<1000000;$i++) sha1(rand(0,$i));'
real    0m2.050s
user    0m2.021s
sys     0m0.015s

Liên quan:


8

Bạn không nói những gì bạn đang cố gắng bảo vệ.

CRC thường được sử dụng trong các hệ thống nhúng để kiểm tra chống tham nhũng dữ liệu do vô tình thay vì ngăn chặn sửa đổi hệ thống độc hại. Ví dụ về những nơi mà CRC có thể hữu ích là xác thực hình ảnh EPROM trong quá trình khởi tạo hệ thống để bảo vệ chống tham nhũng phần sụn. Bộ tải khởi động hệ thống sẽ tính toán CRC cho mã ứng dụng và so sánh với giá trị được lưu trữ trước khi cho phép mã chạy. Điều này bảo vệ chống lại khả năng tham nhũng chương trình tình cờ hoặc tải xuống không thành công.

CRC cũng có thể được sử dụng theo cách tương tự để bảo vệ dữ liệu cấu hình được lưu trữ trong FLASH hoặc EEPROM. Nếu CRC không chính xác thì dữ liệu có thể được gắn cờ là không hợp lệ và một bộ dữ liệu mặc định hoặc sao lưu được sử dụng. CRC có thể không hợp lệ do lỗi thiết bị hoặc nếu người dùng đã ngắt nguồn trong quá trình cập nhật kho dữ liệu cấu hình.

Đã có ý kiến ​​cho rằng băm cung cấp xác suất phát hiện tham nhũng cao hơn CRC với nhiều lỗi bit. Điều này là đúng và quyết định về việc sử dụng CRC 16 hay 32 bit hay không sẽ ảnh hưởng đến hậu quả an toàn của khối dữ liệu bị hỏng đang được sử dụng và liệu bạn có thể biện minh cho cơ hội 1 trong 2 ^ 16 hoặc 2 ^ 32 không khối dữ liệu được khai báo không chính xác hợp lệ.

Nhiều thiết bị có bộ tạo CRC tích hợp cho các thuật toán tiêu chuẩn. Sê-ri MSP430F5X từ Texas có triển khai phần cứng của Tiêu chuẩn CRC-CCITT.


6

CRC32 nhanh hơn và hàm băm chỉ dài 32 bit.

Sử dụng nó khi bạn chỉ muốn kiểm tra nhanh và nhẹ. CRC được sử dụng trong ethernet.

Nếu bạn cần độ tin cậy cao hơn, tốt hơn là sử dụng chức năng băm hiện đại.


5

Chỉ sử dụng CRC nếu tài nguyên tính toán rất chặt chẽ (tức là một số môi trường nhúng) hoặc bạn cần lưu trữ / vận chuyển nhiều giá trị đầu ra và không gian / băng thông chặt chẽ (vì CRC thường là 32 bit trong đó đầu ra MD5 là 128 bit, SHA1 160 bit và các biến thể SHA khác lên tới 512 bit).

Không bao giờ sử dụng CRC để kiểm tra bảo mật vì CRC rất dễ "giả".

Ngay cả đối với phát hiện lỗi vô tình (chứ không phải phát hiện thay đổi độc hại), băm vẫn tốt hơn CRC đơn giản. Một phần vì cách tính đơn giản của CRC (và một phần vì các giá trị CRC thường ngắn hơn các đầu ra băm thông thường nên có phạm vi giá trị nhỏ hơn nhiều), nhiều khả năng, trong trường hợp có hai hoặc nhiều lỗi , một lỗi sẽ che dấu một lỗi khác để bạn kết thúc với cùng một CRC mặc dù có hai lỗi.

Tóm lại: trừ khi bạn có lý do không sử dụng thuật toán băm đàng hoàng, hãy tránh các CRC đơn giản.


1
CRC sẽ nắm bắt tất cả các thay đổi dữ liệu ngẫu nhiên nếu bạn đang sử dụng một đa thức thích hợp. 1/2 ^ 32 thay đổi bị bỏ lỡ nếu chính xác nhiều bit phải được thay đổi.
Gerhard

Và với một đa thức thích hợp, nó cũng sẽ bắt được tất cả các lỗi của một số lớp phổ biến nhất định, ví dụ như lỗi nổ.
erikkallen

Tôi đồng ý với câu trả lời của bạn ngoại trừ câu hỏi là về các hệ thống nhúng. Hiệu suất của một thuật toán mã hóa có thể có vấn đề trên các hệ thống nhúng nhỏ hơn.
Craig McQueen

Hoàn toàn không đồng ý với điều đó. Các đa thức lỗi CRC được chọn cẩn thận để có thể phát hiện được 1,2,3,5 và các lỗi bùng phát lên đến mức tương đương 11 bit trong một số trường hợp. Băm mật mã hoàn toàn là thống kê, vì vậy bạn phải sử dụng các giá trị tiêu hóa lớn. 8-32 bit là không thực tế đối với một mã hóa băm mật mã cũng như vô cùng đắt đỏ trong các kiểu và cổng cpu. Chắc chắn không phải là một câu trả lời nếu bạn làm việc trên các hệ thống nhúng. Lần duy nhất KHÔNG sử dụng CRC là nếu bạn phải đối phó với một kịch bản đối nghịch thông minh.
ilgitano

5

Gần đây tôi đã bắt gặp việc sử dụng CRC rất thông minh. Tác giả của công cụ nhận dạng và loại bỏ trùng lặp tệp jdupe (cùng tác giả của tiêu đề công cụ exif phổ biến) sử dụng nó trong lần đầu tiên chuyển qua các tệp. CRC được tính trên 32K đầu tiên của mỗi tệp để đánh dấu các tệp có vẻ giống nhau, các tệp phải có cùng kích thước. Các tệp này được thêm vào danh sách các tệp để thực hiện so sánh nhị phân đầy đủ. Nó tăng tốc độ kiểm tra các tập tin phương tiện lớn.


Một vấn đề với cách tiếp cận đó là khi chạy trên một tệp chứa CRC32 được nhúng trong nó, CRC kết quả có thể độc lập với dữ liệu trong tệp (vì nếu dữ liệu thay đổi, CRC32 sẽ được thay đổi để loại bỏ sự khác biệt ). Việc trộn dữ liệu theo một cách đơn giản trước khi tính toán CRC32 sẽ tránh được vấn đề đó.
supercat

1
@supercat - Tôi thực sự không tin rằng đây thực sự là một vấn đề. Nếu một tệp chứa tiêu đề crc32 là crc32 của phần còn lại của tệp, thì khi tệp được cập nhật, mỗi bit trong tiêu đề crc32 sẽ có khoảng 50% khả năng khác nhau. Các thay đổi trong tiêu đề nên theo một phân phối khá ngẫu nhiên. Tôi không thấy điều này sẽ dẫn đến CRC32 (tiêu đề + dữ liệu) luôn giống nhau hoặc theo bất kỳ cách nào không phụ thuộc vào phần dữ liệu của tệp.
teratorn

@teratorn: Tôi đã thấy một số tệp có CRC32 ở cuối, được tính theo cách mà CRC32 của toàn bộ tệp, được tính bằng hằng số hạt giống cụ thể, sẽ luôn là một giá trị không đổi khác. Điều này là khá phổ biến với những thứ như hình ảnh mã nhị phân. Nếu trình phát DVD Acme 1000 sử dụng hình ảnh mã kích thước cố định để nâng cấp chương trình cơ sở và mong muốn mọi hình ảnh mã đều có CRC32 nhất định, thì một thói quen tính toán các tệp CRC32 khác nhau sẽ không thể phân biệt các hình ảnh mã khác nhau cho Acme 1000.
supercat

Điểm của CRC trong trường hợp đó là nhanh chóng xác định rằng các tệp là khác nhau. Nếu CRC trở lại như cũ, bây giờ bạn phải thực hiện một so sánh nhị phân đắt tiền, vì vậy CRC nhúng không phá vỡ thuật toán. Có thể xảy ra việc một số tệp cuối cùng được so sánh nhị phân vì lần đầu tiên CRC nói rằng MIGHT giống nhau, nhưng không chắc là nhiều trong số đó và bạn có thể tránh nó bằng cách sử dụng đa thức tùy chỉnh.
ilgitano

4

CRC32 là cách nhanh hơn và đôi khi có hỗ trợ phần cứng (tức là trên bộ xử lý Nehalem). Thực sự, lần duy nhất bạn sử dụng nó là nếu bạn giao tiếp với phần cứng hoặc nếu bạn thực sự chặt chẽ về hiệu suất


4

Hãy bắt đầu với những điều cơ bản.

Trong Mật mã học, thuật toán băm chuyển đổi nhiều bit thành ít bit hơn thông qua thao tác phân loại. Băm được sử dụng để xác nhận tính toàn vẹn của tin nhắn và tệp.

Tất cả các thuật toán băm tạo ra va chạm. Xung đột là khi một số kết hợp nhiều bit tạo ra cùng một đầu ra ít bit hơn. Độ mạnh mật mã của thuật toán băm được xác định bởi việc một cá nhân không có khả năng xác định đầu ra sẽ là gì cho một đầu vào nhất định bởi vì nếu họ có thể xây dựng một tệp có hàm băm khớp với tệp hợp pháp và làm tổn hại tính toàn vẹn giả định của hệ thống. Sự khác biệt giữa CRC32 và MD5 là MD5 tạo ra hàm băm lớn hơn khó dự đoán hơn.

Khi bạn muốn triển khai tính toàn vẹn của tin nhắn - có nghĩa là tin nhắn đã không bị can thiệp trong quá trình vận chuyển - không có khả năng dự đoán va chạm là một thuộc tính quan trọng. Một 32-bit hash có thể mô tả 4 tỷ thông điệp khác nhau hoặc các tập tin sử dụng 4 tỷ băm độc đáo khác nhau. Nếu bạn có 4 tỷ và 1 tệp, bạn được đảm bảo có 1 xung đột. Không gian 1 TB có khả năng xảy ra hàng tỷ va chạm. Nếu tôi là kẻ tấn công và tôi có thể dự đoán băm 32 bit đó sẽ là gì, tôi có thể tạo một tệp bị nhiễm va chạm với tệp đích; có cùng hàm băm.

Ngoài ra, nếu tôi thực hiện truyền 10mbps thì khả năng gói bị hỏng vừa phải để vượt qua crc32 và tiếp tục đi đến đích và thực thi là rất thấp. Hãy nói với tốc độ 10mbps tôi nhận được 10 lỗi \ giây . Nếu tôi tăng tốc lên tới 1gb / giây , thì bây giờ tôi nhận được 1.000 lỗi mỗi giây . Nếu tôi ram tối đa 1 exabit mỗi giây, thì tôi có tỷ lệ lỗi là 1.000.000.000 lỗi mỗi giây . Giả sử chúng ta có tỷ lệ va chạm là 1 \ 1.000.000lỗi truyền, có nghĩa là 1 trong một triệu lỗi truyền dẫn dẫn đến dữ liệu bị hỏng không bị phát hiện. Với tốc độ 10mbps tôi nhận được dữ liệu lỗi được gửi cứ sau 100.000 giây hoặc khoảng một lần một ngày. Với tốc độ 1gbps, cứ sau 5 phút lại xảy ra một lần. Với tốc độ 1 exabit mỗi giây, chúng ta đang nói chuyện nhiều lần trong một giây.

Nếu bạn mở Wireshark, bạn sẽ thấy tiêu đề Ethernet thông thường của bạn có CRC32, tiêu đề IP của bạn có CRC32 và Tiêu đề TCP của bạn có CRC32 và ngoài các giao thức lớp cao hơn có thể làm gì; ví dụ IPSEC có thể sử dụng MD5 hoặc SHA để kiểm tra tính toàn vẹn ngoài các mục trên. Có một số lớp kiểm tra lỗi trong các giao tiếp mạng thông thường và chúng VẪN đi ngay bây giờ và ở tốc độ 10mbps phụ.

Kiểm tra dự phòng chu kỳ (CRC) có một số phiên bản phổ biến và một số phiên bản không phổ biến nhưng thường được thiết kế để chỉ thông báo khi tin nhắn hoặc tệp bị hỏng trong quá trình chuyển đổi (lật nhiều bit). Bản thân CRC32 không phải là một giao thức kiểm tra lỗi rất tốt theo các tiêu chuẩn ngày nay trong môi trường doanh nghiệp lớn, vô hướng vì tỷ lệ va chạm; người dùng trung bình ổ cứng có thể có tới 100 nghìn tệp và chia sẻ tệp trên một công ty có thể có hàng chục triệu. Tỷ lệ không gian băm so với số lượng tệp quá thấp. CRC32 được tính toán rẻ để thực hiện trong khi MD5 thì không.

MD5 được thiết kế để ngăn chặn việc sử dụng va chạm có chủ ý để làm cho một tệp độc hại trông lành tính. Nó được coi là không an toàn vì không gian băm đã được ánh xạ đủ để cho phép một số cuộc tấn công xảy ra và một số va chạm có thể dự đoán được. SHA1 và SHA2 là những đứa trẻ mới trong khối.

Để xác minh tập tin, Md5 bắt đầu được sử dụng bởi rất nhiều nhà cung cấp vì bạn có thể thực hiện nhanh chóng các tệp multigigabyte hoặc multiterrabyte với nó và xếp chồng lên trên việc sử dụng và hỗ trợ CRC32 của hệ điều hành chung. Đừng ngạc nhiên nếu trong thập kỷ tới, các hệ thống tập tin bắt đầu sử dụng MD5 để kiểm tra lỗi.


1

Mã CRC đơn giản và nhanh hơn.

Vì cái gì bạn cần?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.