Προς το περιεχόμενο

Έλεγχος αν τα περιεχομενα δυο αρχειων ειναι ιδια


geo1st487

Προτεινόμενες αναρτήσεις

Δημοσ.

Πως μπορω να ελεγξω αν το περιεχομενο δυο αρχειων ειναι ιδιο; Να κανω ελεγχω byte προς bye δεν λεει γιατι εχει μεγαλη καθυστερηση. Καμια ιδεα;

Ευχαριστω

  • Απαντ. 39
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

κανε το checsum και των 2 αρχειων και συγκρινε τα. Αν ειναι ιδια, η πιθανοτητα να ειναι διαφορετικα τα αρχεια ειναι πολυ μικρη. Αν παραλληλα συγκρινεις και filesize KAI filename, η πιθανοτητα γινεται ακομα μικροτερη.

Δημοσ.
κανε το checsum και των 2 αρχειων και συγκρινε τα. Αν ειναι ιδια, η πιθανοτητα να ειναι διαφορετικα τα αρχεια ειναι πολυ μικρη. Αν παραλληλα συγκρινεις και filesize KAI filename, η πιθανοτητα γινεται ακομα μικροτερη.

 

Πρακτικα με προγραμματισμο πως μπορω να κανω το checksum;

Δημοσ.
σε τι γλωσσα γραφεις?

 

με ενα google-αρισμα βρηκα αυτο και αυτο

σιγουρα θα βρεις και αλλα.....

 

VB6

Μπορω να κανω checksum οποιοδηποτε αρχειο; (π.χ. word, excel, pdf κλπ)

Thanks για την βοηθεια

Δημοσ.

Βασικα ναι, μπορεις να κανεις checksum οτιδηποτε, το φορτωνεις σε ενα buffer και κανεις calculations επανω του. Κανεις τα ιδια calculations επανω στο αλλο αρχειο και συγκρινεις αποτελεσματα. Το checksum θα ειναι ενα μεγαλο αλαφαριθμητικο που δεν θα βγαζει νοημα σε σενα. Το νοημα του ειναι πως αν σε ενα αρχειο γινει η παραμικρη αλλαγη, το checksum που θα βγαλει θα ειναι εντελως διαφορετικο. Γιαυτο ειναι πολυ απιθανο να πετυχεις δυο διαφορετικα αρχεια με το ιδιο checksum και σε αυτο στηριζεται η ολη λογικη του.

 

ενα link για vb

Δημοσ.
Βασικα ναι, μπορεις να κανεις checksum οτιδηποτε, το φορτωνεις σε ενα buffer και κανεις calculations επανω του. Κανεις τα ιδια calculations επανω στο αλλο αρχειο και συγκρινεις αποτελεσματα. Το checksum θα ειναι ενα μεγαλο αλαφαριθμητικο που δεν θα βγαζει νοημα σε σενα. Το νοημα του ειναι πως αν σε ενα αρχειο γινει η παραμικρη αλλαγη, το checksum που θα βγαλει θα ειναι εντελως διαφορετικο. Γιαυτο ειναι πολυ απιθανο να πετυχεις δυο διαφορετικα αρχεια με το ιδιο checksum και σε αυτο στηριζεται η ολη λογικη του.

 

Αρα λοιπον μπορω να παρω το checksum απο οποιοδηποτε αρχειο; Ποσο μεγαλο αλφαριθμητικο ειναι το checksum; Με τα calculations παιρνω δειγματα απο τα δυο αρχεια και συγκρινω αν ειναι ιδια;

Δημοσ.

καταρχην, δεν ξερω vb για να σου γραψω κωδικα αλλα....

 

Οταν ανοιγεις ενα αρχειο, αυτο μπορεις να το αντιγραψεις στη μνημη ας πουμε σε ενα πινακα χαρακτηρων.

Καθε χαρακτηρας (στα περισοτερα λειτουργικα συστηματα τουλαχιστον) ειναι ενα byte.

Αρα, αν εχεις ενα αρχειο (πχ ενα εξελοφυλλο, xls file) που ειναι 1Kb, χρειαζεσαι για να το αποθηκευσεις ενα πινακα 1024 (1024bytes = 1Kb) χαρακτηρων, οκ?

Εφαρμοζεις λοιπον τους οποιους υπολοισμους σε αυτο το πινακα.

 

Υπαρχουν διαφορα ειδη checksum, ενα γνωστο ειναι το md5 ας πουμε αλλα δε νομιζω να ειναι το γρηγοροτερο. Ισως αν ξερει κανεις να μας πει ποιο ειναι το γρηγοροτερο checksum που μπορουμε να κανουμε.

Δημοσ.

Όχι, ΔΕΝ ΕΙΝΑΙ πιο γρήγορο το να υπολογίζεις checksum. ΟΥΤΕ είναι πιο γρήγορο το να υπολογίζεις και να συγκρίνεις checksum για να δεις αν ΔΥΟ αρχεία είναι ίδια, σε καμία περίπτωση.

 

ΕΙΝΑΙ πιο γρήγορο να συγκρίνεις checksum αντί για bytes ΟΤΑΝ πρόκειται για σύγκριση ΠΟΛΛΩΝ αρχείων μεταξύ τους, αλλά ΜΕΡΙΚΕΣ ΦΟΡΕΣ ΜΟΝΟ και σε συγκεκριμένου είδους συγκρίσεις.

 

Για γενική χρήση, με τα κατάλληλα "κόλπα" ΕΙΝΑΙ πιο γρήγορο (και φυσικά πιο αξιόπιστο) το να συγκρίνεις bytes.

 

> Αν το τελευταίο σας φαίνεται αδύνατο, συγκρίνετε το πρόγραμμα της υπογραφής μου σε περιπτώσεις πολλών αρχείων και σε "βαριές δουλειές με οποιοδήποτε άλλο πρόγραμμα θεωρείτε πως θα είναι γρηγορότερο.

 

Δημοσ.
Όχι, ΔΕΝ ΕΙΝΑΙ πιο γρήγορο το να υπολογίζεις checksum. ΟΥΤΕ είναι πιο γρήγορο το να υπολογίζεις και να συγκρίνεις checksum για να δεις αν ΔΥΟ αρχεία είναι ίδια, σε καμία περίπτωση.

 

ΕΙΝΑΙ πιο γρήγορο να συγκρίνεις checksum αντί για bytes ΟΤΑΝ πρόκειται για σύγκριση ΠΟΛΛΩΝ αρχείων μεταξύ τους, αλλά ΜΕΡΙΚΕΣ ΦΟΡΕΣ ΜΟΝΟ και σε συγκεκριμένου είδους συγκρίσεις.

 

Για γενική χρήση, με τα κατάλληλα "κόλπα" ΕΙΝΑΙ πιο γρήγορο (και φυσικά πιο αξιόπιστο) το να συγκρίνεις bytes.

 

> Αν το τελευταίο σας φαίνεται αδύνατο, συγκρίνετε το πρόγραμμα της υπογραφής μου σε περιπτώσεις πολλών αρχείων και σε "βαριές δουλειές με οποιοδήποτε άλλο πρόγραμμα θεωρείτε πως θα είναι γρηγορότερο.

 

Δηλαδη και με checksum αργει; Θελω να συγκρινω δυο αρχεια μονο, οχι πολλα μαζι, αλλα θελω σε λιγα δευτερολεπτα να εχω το αποτελεσμα τη συγκρισης. Φυσικα θελω αξιοπιστια γιατι εστω και 1 byte να αλλαζει τοτε τα αρχεια ειναι διαφορετικα.

Δημοσ.

Απλή ανάγνωση buffers (όχι χαρακτήρων). Διαβάζεις δηλαδή πολλούς χαρακτήρες μαζι.Το προτινόμενο size των buffers είναι 4096.

Και μετά συγκρίνεις στην μνήμη τα block.

Δημοσ.
Το εχεις τσεκαρει; δουλευει;

Θα το κοιταξω! Σ'ευχαριστω παρα πολυ ntaryl !

 

ntaryl μηπως ξερεις πως λειτουργει ο κωδικας που εδωσες; Θελω να μαθω κυριως τι ορισματα πρεπει να δωσω στις συναρτισεις και τι αντιπροσωπευουν οι τιμες που επιστρεφουν.

Ευχαριστω

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...