Τι είναι το hash και τι χρειάζεται; Hash και hash cryptovalut τι είναι hash ανά δευτερόλεπτο

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

Τώρα υπάρχουν τόσα πολλά chat chats cryptocurry και διαπραγμάτευση. Κάθε ζήτημα του νεοεισερχομένου "Τι στο Asic να αγοράσει ή σε ποιο αγρόκτημα να συγκεντρώσει" συνοδεύεται από μια απάντηση ... "Ναι, βλέπετε πώς η πολυπλοκότητα του δικτύου αναπτύσσεται και δεν σκέφτεται καν αυτό το θέμα!"

Για απλότητα, θα εξετάσουμε την πολυπλοκότητα και τη στέγαση του δικτύου στο παράδειγμα ενός κέρματος (ανάλογο αιθέριου, σε παρόμοιο αλγόριθμο). Οι αριθμοί είναι λιγότερο και ελπίζουμε για μένα, θα είναι πιο εύκολο να εξηγήσετε την ουσία.

Το δίκτυο κάθε κρυπτογραφίας έχει μια τέτοια παράμετρο ως "χρόνος δημιουργίας μπλοκ". Στην περίπτωση της μουσουλμανικής είναι 15 δευτερόλεπτα. Κάθε 15 δευτερόλεπτα ένας από τους ανθρακωρύχους θα πρέπει να βρει μια λύση για να δημιουργήσει ένα μπλοκ.

Πώς να διατηρήσετε αυτήν την παράμετρο σε 15 δευτερόλεπτα, ανεξάρτητα από τον αριθμό των ανθρακωρύχων που συνδέονται με το δίκτυο; Μετά από όλα, αν υπάρχουν πολλοί ανθρακωρύχοι, θα βρουν πάρα πολύ συχνά τα μπλοκ (εδώ είναι ένα παράδειγμα ενός άδειου μπλοκ στο δίκτυο UBIQ http://www.ubiqu.cc/block/212214) και αν οι ανθρακωρύχοι είναι μικροί, τότε Τα μπλοκ θα είναι σπάνια και οι συναλλαγές δικτύων θα πάνε πολύ καιρό.

Για την εξεύρεση 1 μπλοκ στο δίκτυο μουσικορίας Mainer ή Pool (πολλοί ανθρακωρύχοι μαζί) πάρτε 309 μουσικοΐνες \u003d $ 13 νομίσματα στη σημερινή πορεία.

Υποχώρηση. Στο δίκτυο, ο Etherumer για την εύρεση ενός μπλοκ καταβάλλεται 5 ETH \u003d $ 1900, στο δίκτυο Etherium Classic 5 κλπ \u003d $ 75. Αλλά, δυστυχώς, η πολυπλοκότητα και τα δίκτυα hashiret σε αυτά τα κέρματα είναι πολλές φορές περισσότερο.

Εάν οι ανθρακωρύχοι θα παράσχουν κενά μπλοκ και θα λάβουν χρήματα για αυτό - το νόμισμα θα υποτιμηθεί και αν τα μπλοκ βρίσκουν αργά - οι συναλλαγές θα σηκωθούν ... και πάλι, το κέρμα θα αποσβέσει.

Η πολυπλοκότητα αρχίζει να εργάζεται εδώ. Εάν στα δάχτυλά σας, τότε είναι μόνο η πολυπλοκότητα του έργου που πρέπει να λυθούν οι κυριότεροι για να δημιουργήσουν ένα μπλοκ και μπορεί να αλλάξει. Η πολυπλοκότητα εξαρτάται από το NETHERAID του δικτύου (ο αριθμός των ανθρακωρύχων που συνδέονται με το δίκτυο αυτού του νομίσματος). Εάν οι ανθρακωρύχοι δεν είναι αρκετοί - η πολυπλοκότητα πέφτει αν οι ανθρακωρύχοι είναι πολύ - η πολυπλοκότητα αρχίζει να αναπτύσσεται και ένα σκυρόδεμα το μπλοκ είναι πιο δύσκολο να βρεθεί το μπλοκ ...

Οι κύριοι αμοιβής παίρνουν τα νομίσματα του ίδιου του δικτύου, αλλά όλοι οι ανθρακωρύχοι αγαπούν τα καλά αυτοκίνητα, τα τρόφιμα και τα κουρέλια. Ως εκ τούτου, είναι σημαντικό για αυτούς πόσο είναι σε δολάρια ΗΠΑ, διότι εάν η τιμή του κέρματος έχει αυξηθεί στο χρηματιστήριο, τότε η αξία της αμοιβής για την εξεύρεση του μπλοκ έχει γίνει περισσότερο στα περίγγυα δολάρια ΗΠΑ.

Την άλλη μέρα, 27 Αυγούστου (βλ. Το διάγραμμα παραπάνω) η τιμή των νομισμάτων μουσικορίας έχει αυξηθεί κατά καιρούς, οι ανθρακωρύχοι που ασχολούνταν με τα νομίσματα του Zcash, το Ethyurium, το Monero ... Achnuli εν αναμονή περισσότερων κερδών και άλλαξε τα αγροκτήματα τους στο νόμισμα μουσικής . Ταυτόχρονα, το ίδιο το δίκτυο μουσικομής, φυσικά, ανταποκρίθηκε με απότομη αύξηση της πολυπλοκότητας.

Η πολυπλοκότητα μετράται στο Hash (συνήθως Terrarahchs th), που χρησιμοποιείται για την εξόρυξη, αυτή η μονάδα ολοκληρωμένων εργασιών. Η ισχύς του δικτύου (ο αριθμός των ανθρακωρύχων) μετράται σε Hashas ανά δευτερόλεπτο (th / s). Το ίδιο το δίκτυο ρυθμίζει την πολυπλοκότητα έτσι ώστε η πολυπλοκότητα / ισχύς του δικτύου \u003d χρόνος μέχρι το επόμενο μπλοκ (στην περίπτωση της μουσουλμανικής 15 δευτερολέπτων).

27 Αυγούστου να απογείωση Η πολυπλοκότητα των τιμών του δικτύου ήταν: 7,5η κατά μέσο όρο και το Heschery του δικτύου: 500 GH / S (περίπου 16.000 κάρτες βίντεο), στη συνέχεια μετά την απογείωση, η τιμή του δικτύου έχει εξελιχθεί: 1.12 th / S (1120 GH / s) (περίπου 35000 κάρτες βίντεο) και η πολυπλοκότητα κατά την ίδια στιγμή απογειώθηκε στις 16.728 ο.

Ως αποτέλεσμα, το κέρδος του αγροκτήματος, το οποίο εξόρυξε το κέρμα πριν από την απογείωση των τιμών και η τιμή δεν έχει αλλάξει μετά την απογείωση. Το αγρόκτημα άρχισε να παράγει λιγότερα νομίσματα, αλλά για μεγαλύτερη τιμή (το αγρόκτημα δεν έχει σημασία ή μια ολόκληρη ομάδα αγροκτημάτων).

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

Είναι απαραίτητο να κάνετε μια άλλη dripession, υπάρχουν άνθρωποι που ακολουθούν στενά την πολυπλοκότητα και το Hashhier ... όλα τα δίκτυα είναι μια στρογγυλή μέρα και σε στιγμές που η Hesrayite θα πέσει ή η πολυπλοκότητα στέλνει, αγοράζοντας την εξουσία στο Nicehash και να τους στείλετε σε ένα δίκτυο Αναγνωρισμένα κέρματα. Και πιάνουμε πολλά μπλοκ.

Στην πραγματικότητα, το συμπέρασμα: Ας φανταστούμε ότι υπάρχει μόνο ένα νόμισμα Etieth. Ο Etherumer Network Hesreite αυξάνεται συνεχώς, όλο και περισσότεροι νέοι ανθρακωρύχοι έρχονται. Εάν η πορεία του αιθέριου πέφτει και ο αριθμός των ανθρακωρύχων θα παραμείνει αμετάβλητος (ή θα αυξηθεί ακόμη χειρότερα), η εξόρυξη θα έρθει στο επίπεδο της πώλησης (πόσο το $ εξαπλώθηκε, τόσο πολύ πληρωμή για ηλεκτρική ενέργεια $). Σε αυτή την περίπτωση, το αγρόκτημα θα αρχίσει να απενεργοποιεί και να πουλήσει, η πολυπλοκότητα θα αρχίσει να πέφτει και τα εισοδήματα να αναπτυχθούν ξανά.

Επιβιώνει το ισχυρότερο και ένα που έχει χρήματα μερικές φορές περιμένει το μεγαλύτερο στην πρίζα.

Πολλοί από τους Miminat, ή Minnieli, ή πρόκειται να ξεκινήσουν τη Maja, επιλέγοντας τον εαυτό τους τον εξοπλισμό στο μέγιστο των gigaches εκεί. Τι είναι αυτά τα hashies;

Όπως γνωρίζετε, η κρυπτογράφηση (λήψη bitcoin) εξορύσσεται ως αποτέλεσμα της επίλυσης μαθηματικών προβλημάτων. Αλλά γιατί ο Bitcoin δημιουργείται με αυτόν τον τρόπο; Για να το κάνετε αυτό, πρέπει να καταλάβετε την αξία μιας τέτοιας διαδικασίας ως κρυπτογραφικό hash ή hashing. Έτσι, το Hashing είναι μια αλλαγή στα εισερχόμενα δεδομένα διαφόρων μεγεθών στα αρχικά δεδομένα ενός σαφώς καθορισμένου μεγέθους, χρησιμοποιώντας έναν ειδικό αλγόριθμο (κανόνες).

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

Έτσι λειτουργεί: Η διαδικασία του Hashing λαμβάνει δεδομένα, όπως ένας κωδικός πρόσβασης και επεξεργάζεται αυτές τις εισόδους μέσω ενός ειδικού αλγορίθμου που δημιουργεί ένα μεγάλο αριθμό που ονομάζεται "Hash". Το Hash έχει δύο βασικές διακριτικές ιδιότητες.

  1. Πρώτον, ένα και τα ίδια δεδομένα εισόδου αντιστοιχεί πάντοτε στον ίδιο αριθμό. Δηλαδή, αν εισαγάγετε τον ίδιο κωδικό πρόσβασης κάθε φορά, το hash θα δημιουργήσει τον ίδιο αριθμό στην έξοδο, η οποία αντιστοιχεί σε αυτό.
  2. Δεύτερον, η Hashing είναι μια μονόδρομη διαδικασία. Είναι σχεδόν αδύνατο να πάρει την έννοια του hash και με τη βοήθεια της αντίστροφης ανάπτυξης να αποκαλύψει τι ήταν στην είσοδο. Έτσι, είναι αδύνατο να πάτε από το αντίστροφο και να εισέλθετε στην τιμή hash, δηλαδή ο μεγαλύτερος αριθμός, για να καθορίσετε τον κωδικό πρόσβασης. Χάρη σε αυτά τα δύο αντικείμενα hash και χρησιμοποιείται ως ανεξάρτητη μέθοδο επεξεργασίας δεδομένων. Εάν η διαδικασία ήταν αναστρέψιμη, δεν θα ονομαστεί κακή, αλλά μια παλιά καλή κρυπτογράφηση / αποκρυπτογράφηση που στον σύγχρονο κόσμο είναι αναποτελεσματική.

Τώρα πώς λειτουργεί για ένα ακόμη πιο απλό παράδειγμα. Εγγραφείτε στον ιστότοπο, πληκτρολογήστε τον κωδικό πρόσβασής σας. Το σύστημα επεξεργάζεται και δημιουργεί ένα hash που ταιριάζει με τον κωδικό πρόσβασής σας. Ταυτόχρονα, ο ίδιος ο κωδικός πρόσβασης δεν αποθηκεύεται. Και τώρα, όταν έρχεστε σε αυτόν τον ιστότοπο και εισάγετε αυτόν τον κωδικό πρόσβασης, το σύστημα θα δημιουργήσει ένα hash, να το συγκρίνει με μια αποθηκευμένη τιμή και να εγκρίνει την πρόσβαση με σύμπτωση. Και χάκερ, hacking το σύστημα, θα λάβουν μόνο ένα σύνολο ομίχλης, απολύτως άχρηστο για να πάρετε έναν κωδικό πρόσβασης.


Υπάρχει μόνο ένα μειονέκτημα σε αυτό το σύστημα - αν ξεχάσετε τον κωδικό πρόσβασης, δεν μπορεί να αποκατασταθεί. Το σύστημα δεν αποθηκεύει τους κωδικούς σας, επομένως δεν μπορεί να τα στείλει. Ωστόσο, σε ακραίες περιπτώσεις, ο κωδικός πρόσβασης μπορεί να επαναφερθεί, θα στείλετε έναν προσωρινό κωδικό πρόσβασης, με την οποία μπορείτε να ρυθμίσετε το δικό σας ξανά. Αυτό το μειονέκτημα, κατά τη γνώμη μου, δεν είναι κρίσιμη, ειδικά στο πλαίσιο της ασφάλειας του χαστούκι.

Και τώρα πίσω στο θέμα του Bitcoin και στο γεγονός ότι αυτό είναι για εργασίες υπολογιστών, η λύση του οποίου σας βραβεί με τα αγαπημένα bitcoins. Έτσι, νωρίτερα είπαμε ότι με τη βοήθεια ενός hash δεν μπορείτε να καθορίσετε τον κωδικό πρόσβασής σας. Ωστόσο, ο τρόπος για να μάθετε αυτή την τιμή είναι ακόμα εκεί. Ονομάζεται "η μέθοδος χονδροειδούς δύναμης" ή με άλλα λόγια - οι συνδυασμοί είναι brutexing μέχρι τη στιγμή μέχρι να μαντέψετε και η αξία δεν συμπίπτει με το hash.

Φανταστείτε ότι το πρωτόκολλο Bitcoin εξέδωσε την εργασία - να μαντέψει τον αριθμό 5 και οι συνολικοί αριθμοί είναι ένα εκατομμύριο. Οι πιθανότητές σας να λύσετε αυτό το πρόβλημα ανέρχεται σε 1 έως ένα εκατομμύριο. Εάν το δίκτυο θέλει να απλοποιήσει την εργασία, καθορίζει το φάσμα των αριθμών, ας πούμε από 1 έως 100, και οι πιθανότητές σας είναι ήδη 100 έως ένα εκατομμύριο. Εάν πρέπει να περιπλέξετε την εργασία, να επεκτείνετε το εύρος και τώρα πρέπει να μαντέψετε ένα ποσοστό όχι από ένα εκατομμύριο, αλλά από ένα δισεκατομμύριο τιμές. Σε αυτό είναι ότι το μαθηματικό έργο είναι - είναι απαραίτητο ο αριθμός που να αντιστοιχεί σε ένα συγκεκριμένο χαστητήριο.

Το Hash ενημερώνεται κάθε 10 λεπτά και ο πρώτος υπολογιστής, η επίλυση της εργασίας, λαμβάνει μια ανταμοιβή. Αλλά σήμερα το φάσμα των αριθμών από το οποίο πρέπει να βρεθεί το σωστό είναι τεράστιο. Όλοι οι ανθρακωρύχοι της Bitcoin του κόσμου μαζί για ένα λεπτό περίπου 50.000.000.000.000.000.000 τιμές εισόδου ανά δευτερόλεπτο σε μια προσπάθεια να πάρει το κλειδί για το καθορισμένο hash.

Το δίκτυο Bitcoin παρακολουθεί τακτικά την ταχύτητα επίλυσης του προβλήματος και αν έχει λυθεί πολύ ταχύτερη από 10 λεπτά, καθιστούν τα ακόλουθα σκληρότερα. Εάν δεν επενδύσει σε 10 λεπτά, το επόμενο θα είναι ευκολότερο. Μόλις ο πρώτος υπολογιστής αποφάσισε το καθήκον, δείχνει τη λύση του σε όλους τους συμμετέχοντες που ελέγχουν αυτήν την απόφαση και όταν επιβεβαιώνουν την σύμπτωση του HESHEM, λαμβάνει μια ανταμοιβή και ο νέος κύκλος αρχίζει στη συνέχεια.

Το παραπάνω είναι το διάγραμμα της αντιμετώπισης της ανάπτυξης, οπότε η επιλογή του εξοπλισμού εξόρυξης εισάγεται καλύτερα με καλή τροφοδοσία και την ταχύτητα των υπολογισμών.

Οι αλγόριθμοι χτυπήματος χορδών βοηθούν στην επίλυση πολλών εργασιών. Αλλά έχουν πολύ μειονέκτημα: πιο συχνά δεν είναι 100%, επειδή υπάρχουν πολλές γραμμές των οποίων οι hashies συμπίπτουν. Ένα άλλο πράγμα είναι ότι στις περισσότερες εργασίες δεν μπορείτε να δώσετε προσοχή σε αυτό, καθώς η πιθανότητα της σύμπτωσης Hash εξακολουθεί να είναι πολύ μικρή.

Ο ορισμός του Hash και ο υπολογισμός του

Ένας από τους καλύτερους τρόπους για τον προσδιορισμό της λειτουργίας hash από τη συμβολοσειρά S είναι η ακόλουθη:

H (s) \u003d s + s * p + s * p ^ 2 + s * p ^ 3 + ... + s [n] * p ^ n

όπου το p είναι ένας αριθμός.

Είναι λογικό να επιλέξετε για έναν απλό αριθμό, περίπου ίσο με τον αριθμό των χαρακτήρων στο αλφάβητο εισόδου. Για παράδειγμα, εάν οι χορδές υποτίθεται ότι αποτελείται μόνο από μικρά λατινικά γράμματα, τότε μια καλή επιλογή θα είναι p \u003d 31. Εάν τα γράμματα μπορούν να είναι κεφάλαιο, και μικρές, τότε, για παράδειγμα, μπορεί να p \u003d 53.

Σε όλα τα κομμάτια του κώδικα, το P \u003d 31 θα χρησιμοποιηθεί σε αυτό το άρθρο.

Η αξία του Hasha αποθηκεύεται κατά προτίμηση στον μεγαλύτερο αριθμητικό τύπο - INT64, είναι μακρύς. Προφανώς, με μήκος χορδών περίπου 20 χαρακτήρων, θα συμβεί η υπερχείλιση της αξίας. Το βασικό σημείο είναι ότι δεν δίνουμε προσοχή σε αυτές τις υπερχείλιση, σαν να λαμβάνετε το hash στην ενότητα 2 ^ 64.

Ένα παράδειγμα υπολογισμού κατακερματισμού, εάν επιτρέπονται μόνο μικρά λατινικά γράμματα:

Const int p \u003d 31; Μακρύς μακρύς hash \u003d 0, p_pow \u003d 1; για (size_t i \u003d 0; i

Στα περισσότερα καθήκοντα, έχει νόημα να υπολογίσετε πρώτα όλους τους απαραίτητους βαθμούς P σε οποιοδήποτε πίνακα.

Παράδειγμα πρόβλημα. Αναζήτηση για πανομοιότυπη συμβολοσειρά

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

Θα λάβουμε έναν αλγόριθμο με την πολυπλοκότητα του Ο (n m log n), ενώ χρησιμοποιούμε το Hashi, λαμβάνουμε O (n m + n log n).

Αλγόριθμος. Υπολογίστε το hash από κάθε γραμμή και να ταξινομήσετε τις γραμμές κατά μήκος αυτού του κατακερματισμού.

Διάνυσμα S (n); // ... να διαβάζουμε σειρές ... // θεωρούμε όλα τα βαθμούς Ρ, επιτρέπουν, έως και 10.000 - το μέγιστο μήκος των χορδών σταθερά int p \u003d 31; Διάνυσμα p_pow (10.000); p_pow \u003d 1; για (size_t i \u003d 1; i \u003e Hashes (n); για (int i \u003d 0; i

Hesh Substring και ο ταχείας υπολογισμός του

Ας υποθέσουμε ότι μας δίνεται μια γραμμή S και οι δείκτες των Ι και J δίδονται. Απαιτείται να βρούμε το Hash από το Substring S.

Εξ ορισμού, έχουμε:

H \u003d s [i] + s * p + s * p ^ 2 + ... + s [j] * p ^ (j-i)

H * p [i] \u003d s [i] * p [i] + ... + s [j] * p [j], h * p [i] \u003d h-h

Η περιουσία που λαμβάνεται είναι πολύ σημαντική.

Πράγματι, το αποδεικνύεται αυτό Γνωρίζοντας μόνο το Hashi από όλα τα προθέματα της σειράς του S Row, μπορούμε για O (1) να πάρετε ένα hash οποιασδήποτε υποτίμησης.

Το μόνο πρόβλημα που προκύπτει είναι αυτό που πρέπει να είστε σε θέση να χωρίσετε το P [I]. Στην πραγματικότητα, δεν είναι τόσο εύκολο. Δεδομένου ότι υπολογίζουμε το hash στην ενότητα 2 ^ 64, στη συνέχεια για διαίρεση σε p [i], πρέπει να βρούμε ένα αντίστροφο στοιχείο σε αυτό στο πεδίο (για παράδειγμα, χρησιμοποιώντας έναν εκτεταμένο αλγόριθμο ευκλείλιδου) και πολλαπλασιάζοντας αυτό το αντίστροφο στοιχείο.

Ωστόσο, υπάρχει ένας απλούστερος τρόπος. Στις περισσότερες περιπτώσεις, Αντί να διαιρώσει το Hashi σε βαθμούς P, είναι δυνατόν, αντίθετα, πολλαπλασιάζοντας τους σε αυτούς τους βαθμούς.

Ας υποθέσουμε ότι δύο hash δίδονται: ένα πολλαπλασιασμένο με το p [i], και το άλλο στο P [J]. Αν εγώ.< J, то умножим перый хэш на P, иначе же умножим второй хэш на P. Теперь мы привели хэши к одной степени, и можем их спокойно сравнивать.

Για παράδειγμα, ένας κώδικας που υπολογίζει το Hashi όλων των προθέσεων, και στη συνέχεια για O (1) συγκρίνει δύο υποθήκες:

String s; int i1, i2, len; // δεδομένα εισόδου // θεωρούμε όλα τα μοίρες του p const int p \u003d 31; Διάνυσμα I2 && h1 \u003d\u003d h2 * p_pow) cout<< "equal"; else cout << "different";

Εκκολαπτήριο

Ακολουθούν ορισμένες τυπικές εφαρμογές κατάχρηση:

  • Προσδιορισμός του αριθμού διαφορετικών υποστρωμάτων για O (n ^ 2 log n) (βλ. Παρακάτω)
  • Προσδιορισμός του αριθμού των παλινδρομίων μέσα στη συμβολοσειρά

Προσδιορισμός του αριθμού διαφορετικών υποστρωμάτων

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

Για να επιλύσετε το μήκος του μήκους της υποτίτησης: L \u003d 1 .. Ν.

Για κάθε L, κατασκευάζουμε μια σειρά από το hash substring little l, και θα δώσουμε hash σε ένα βαθμό και θα ταξινομήσετε αυτή τη συστοιχία. Ο αριθμός των διαφόρων στοιχείων σε αυτή τη συστατική προσθήκη στην απάντηση.

Εκπτώσεις:

String s; // συμβολοσειρά εισόδου int n \u003d (int) s.length (); // θεωρούμε όλους τους βαθμούς PSCT int p \u003d 31; Διάνυσμα P_pow (s.length ()); p_pow \u003d 1; για (size_t i \u003d 1; i H (s.length ()); για (size_t i \u003d 0; i HS (N-L + 1). για (int i \u003d 0; i

Τι είναι το hash;Η λειτουργία Hash ονομάζεται μαθηματικός μετασχηματισμός πληροφοριών σε σύντομη, ορισμένη συμβολοσειρά.

Γιατι το χρειαζεσαι?Η ανάλυση χρησιμοποιώντας τις λειτουργίες hash χρησιμοποιείται συχνά για την παρακολούθηση της ακεραιότητας των σημαντικών αρχείων λειτουργικού συστήματος, σημαντικά προγράμματα, σημαντικά δεδομένα. Ο έλεγχος μπορεί να γίνει τόσο αναγκαίο όσο και σε τακτική βάση.

Πώς γίνεται;Αρχικά, καθορίστε ποια ακεραιότητα του ποια αρχεία πρέπει να παρακολουθείται. Για κάθε αρχείο, υπολογίζεται ότι υπολογίζει την αξία του κατακερματισμού του πάνω από έναν ειδικό αλγόριθμο διατηρώντας παράλληλα το αποτέλεσμα. Μετά τον απαιτούμενο χρόνο, δημιουργείται ένας παρόμοιος υπολογισμός και συγκρίνονται τα αποτελέσματα. Εάν οι τιμές διαφέρουν, σημαίνει ότι οι πληροφορίες που περιέχονται στο αρχείο έχουν αλλάξει.

Ποια χαρακτηριστικά θα πρέπει να έχει μια λειτουργία hash;

  • Πρέπει να είναι σε θέση να εκτελεί μετασχηματισμούς δεδομένων αυθαίρετου μήκους σε σταθερό ·
  • Πρέπει να έχει έναν ανοικτό αλγόριθμο έτσι ώστε να μπορεί να εξερευνηθεί το κρυπτοσκόπιο του.
  • Πρέπει να είναι μονόπλευρη, δηλαδή, δεν πρέπει να υπάρχουν μαθηματικές ικανότητες καθορίζοντας τα δεδομένα προέλευσης.
  • Πρέπει να "αντισταθούν" συγκρούσεις, δηλαδή, δεν πρέπει να δώσει τις ίδιες τιμές με διαφορετικά δεδομένα εισόδου.
  • δεν θα πρέπει να απαιτούν μεγάλους υπολογιστές.
  • Με την παραμικρή αλλαγή στα δεδομένα εισόδου, το αποτέλεσμα πρέπει να αλλάξει σημαντικά.

Ποιοι είναι οι δημοφιλείς αλγόριθμοι;Χρησιμοποιούνται επί του παρόντος τις ακόλουθες λειτουργίες hash:

  • CRC - κυκλική περίσσεια κώδικα ή αθροίσματος ελέγχου. Ο αλγόριθμος είναι πολύ απλός, έχει μεγάλο αριθμό παραλλαγών ανάλογα με το απαραίτητο μήκος εξόδου. Όχι κρυπτογραφική!
  • Το MD 5 είναι ένας πολύ δημοφιλής αλγόριθμος. Όπως η προηγούμενη έκδοση του MD 4 είναι μια κρυπτογραφική λειτουργία. HESHA μέγεθος 128 bits.
  • Το SHA -1 είναι επίσης πολύ δημοφιλές κρυπτογραφικό σύγχρονο. HESHA μέγεθος 160 bits.
  • GOST R 34.11-94 - Ρωσικό κρυπτογραφικό πρότυπο για τον υπολογισμό των λειτουργιών hash. HESHA μέγεθος 256 bits.

Πότε μπορούν αυτοί οι αλγόριθμοι να χρησιμοποιήσουν έναν διαχειριστή συστήματος;Συχνά κατά τη λήψη οποιουδήποτε περιεχομένου, όπως προγράμματα από τον κατασκευαστή, τη μουσική, τις ταινίες ή άλλες πληροφορίες, υπάρχει μια τιμή του ελέγχου που υπολογίζεται από έναν συγκεκριμένο αλγόριθμο. Για λόγους ασφαλείας, μετά τη λήψη, είναι απαραίτητο να διεξαχθεί ένας ανεξάρτητος υπολογισμός της λειτουργίας του hash και να συγκρίνετε την τιμή με αυτό που αναφέρεται στον ιστότοπο ή στην εφαρμογή στο αρχείο. Κάνατε ποτέ;

Τι είναι πιο βολικό για να μετρήσετε το hash;Τώρα υπάρχει ένας μεγάλος αριθμός παρόμοιων βοηθητικών προγραμμάτων τόσο των πληρωμένων όσο και των ελεύθερων χρήσης. Μου άρεσε προσωπικά το hashtab. Πρώτον, η χρησιμότητα κατά τη διάρκεια της εγκατάστασης είναι ενσωματωμένη με τη μορφή μιας καρτέλας στις ιδιότητες των αρχείων, δεύτερον, σας επιτρέπει να επιλέξετε μεγάλο αριθμό αλγορίθμων hashing, και τρίτον είναι δωρεάν για ιδιωτική μη εμπορική χρήση.

Τι είναι το ρωσικό;Όπως αναφέρθηκε παραπάνω στη Ρωσία, υπάρχει ένα πρότυπο Hashing Gost R 34.11-94, το οποίο χρησιμοποιείται παντού σε πολλούς κατασκευαστές εργαλείων ασφάλειας πληροφοριών. Ένα από αυτά τα κεφάλαια είναι το πρόγραμμα για τον καθορισμό και τον έλεγχο της αρχικής κατάστασης του πακέτου λογισμικού FIX. Το πρόγραμμα αυτό αποτελεί μέσο ελέγχου της αποτελεσματικότητας της εφαρμογής της SZI.

Fix (έκδοση 2.0.1) για τα Windows 9x / NT / 2000 / XP

  • Υπολογίστε τους ελέγχους των καθορισμένων αρχείων από έναν από τους 5 εφαρμοζόμενους αλγόριθμους.
  • Στερέωση και επακόλουθος έλεγχος της αρχικής κατάστασης του πακέτου λογισμικού.
  • Σύγκριση των εκδόσεων του πακέτου λογισμικού.
  • Σταθεροποίηση και έλεγχος των καταλόγων.
  • Παρακολούθηση αλλαγών σε συγκεκριμένα αρχεία (καταλόγους).
  • Δημιουργία αναφορών σε μορφές TXT, HTML, SV.
  • Το προϊόν έχει πιστοποιητικό FSEC σχετικά με το NDV 3 Νο. 913 έως την 1η Ιουνίου 2013.

Και τι γίνεται με τους eds;Το αποτέλεσμα του υπολογισμού της λειτουργίας μαζί με το μυστικό κλειδί του χρήστη εισέρχεται στην είσοδο του κρυπτογραφικού αλγορίθμου, όπου υπολογίζεται η ηλεκτρονικά ψηφιακή υπογραφή. Αυστηρά μιλώντας, η λειτουργία Hash δεν αποτελεί μέρος του αλγορίθμου EDS, αλλά συχνά αυτό γίνεται ειδικά, προκειμένου να αποκλείσει την επίθεση χρησιμοποιώντας το δημόσιο κλειδί.

Επί του παρόντος, πολλές εφαρμογές ηλεκτρονικού εμπορίου σας επιτρέπουν να αποθηκεύσετε το μυστικό κλειδί του χρήστη στην περιοχή κλειστού διακριτικού (Rutoken, eToken) χωρίς την τεχνική ικανότητα να το εξαγάγετε από εκεί. Το ίδιο το Token έχει μια πολύ περιορισμένη περιοχή μνήμης, που μετράται σε kilobytes. Για να υπογράψετε το έγγραφο δεν υπάρχει δυνατότητα μεταφοράς του εγγράφου στο ίδιο το Token, αλλά να μεταφέρετε το hash του εγγράφου στο διακριτικό και στην έξοδο για να πάρετε το EDS είναι πολύ απλό.