Semantisch correcte code. Discussies over de semantiek van HTML-code met voorbeelden. Wat is semantische code

4.1. Basisprincipes van encryptie

De essentie van codering met behulp van de vervangingsmethode is als volgt. Laat berichten in het Russisch versleuteld worden en elke letter van deze berichten moet vervangen worden. Dan letterlijk A het bronalfabet wordt vergeleken met een bepaalde reeks symbolen (vervanging van cijfers) M A, B – M B, …, I – M I. De cijfervervangingen worden zo gekozen dat elke twee sets ( M ik En M J, ik ≠ j) bevatte geen identieke elementen ( M ik ∩ MJ = Ø).

De tabel in figuur 4.1 is de sleutel van het vervangende cijfer. Als u dit weet, kunt u zowel codering als decodering uitvoeren.

AB... I
M.AM B... M ik

Afb.4.1. Cipher-vervangingstabel

Bij het coderen wordt elke letter A open bericht wordt vervangen door een willekeurig teken uit de set M.A. Als het bericht meerdere letters bevat A, dan wordt elk van hen vervangen door een willekeurig teken uit M.A. Hierdoor is het met behulp van één sleutel mogelijk om verschillende versies van het cijfergram voor hetzelfde open bericht te verkrijgen. Sinds de sets M A, M B, ..., M I niet in paren kruisen, dan is het voor elk symbool van het cijfergram mogelijk om ondubbelzinnig te bepalen tot welke set het behoort, en bijgevolg tot welke letter van het open bericht het vervangt. Daarom is decodering mogelijk en wordt het open bericht op een unieke manier bepaald.

De bovenstaande beschrijving van de essentie van vervangingscijfers is van toepassing op al hun varianten, met uitzondering van , waarin dezelfde vervangingscijfers kunnen worden gebruikt om verschillende karakters van het originele alfabet te coderen (dat wil zeggen M ik ∩ MJ ≠ Ø, ik ≠ j).

De vervangingsmethode wordt vaak door veel gebruikers geïmplementeerd bij het werken op een computer. Als u, vanwege vergeetachtigheid, de tekenset op het toetsenbord niet van Latijn naar Cyrillisch verandert, worden in plaats van letters van het Russische alfabet bij het invoeren van tekst letters van het Latijnse alfabet ("cijfervervangingen") afgedrukt.

Er worden strikt gedefinieerde alfabetten gebruikt om originele en gecodeerde berichten op te nemen. De alfabetten voor het opnemen van originele en gecodeerde berichten kunnen verschillen. Tekens van beide alfabetten kunnen worden weergegeven door letters, hun combinaties, cijfers, afbeeldingen, geluiden, gebaren, enz. Als voorbeeld kunnen we de dansende mannen noemen uit het verhaal van A. Conan Doyle () en het manuscript van de runenbrief () uit de roman “Reis naar het middelpunt van de aarde” van J. Verne.

Vervangingscijfers kunnen in de volgende categorieën worden onderverdeeld subklassen(variëteiten).

Afb.4.2. Classificatie van substitutiecijfers

I. Reguliere cijfers. Cijfervervangingen bestaan ​​uit hetzelfde aantal tekens of zijn van elkaar gescheiden door een scheidingsteken (spatie, punt, streepje, enz.).

Slogancode. Voor een bepaald cijfer is de constructie van een cijfervervangingstabel gebaseerd op een slogan (sleutel) - een gemakkelijk te onthouden woord. De tweede regel van de cijfervervangingstabel wordt eerst gevuld met het sloganwoord (en herhaalde letters worden weggegooid) en vervolgens met de overige letters die niet in het sloganwoord voorkomen, in alfabetische volgorde. Als bijvoorbeeld het sloganwoord “OOM” is geselecteerd, ziet de tabel er als volgt uit.

ABINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuI
DIENNABINGEJoENZYNAARLMOVERPRMETTUFXCHSchSCHKommersantYBEYu

Afb.4.4. Tabel met cijfervervangingen voor het slogancijfer

Wanneer u het oorspronkelijke bericht “ABRAMOV” versleutelt met de bovenstaande sleutel, ziet het cijfergram eruit als “YAPDKMI”.

Polybisch vierkant. Het cijfer werd uitgevonden door de Griekse staatsman, commandant en historicus Polybius (203-120 v.Chr.). Met betrekking tot het Russische alfabet en Indiase (Arabische) cijfers was de essentie van codering als volgt. Letters worden geschreven in een vierkant van 6x6 (niet noodzakelijkerwijs in alfabetische volgorde).


1 2 3 4 5 6
1 ABINGDE
2 JoENZENYNAAR
3 LMNOVERPR
4 METTUFXC
5 HSchSCHKommersantYB
6 EYuI- - -

Afb.4.5. Tabel met cijfervervangingen voor het Polybische vierkant

De gecodeerde letter wordt vervangen door de coördinaten van het vierkant (rij-kolom) waarin deze is geschreven. Als het oorspronkelijke bericht bijvoorbeeld “ABRAMOV” is, dan is het cijfergram “11 12 36 11 32 34 13”. In het oude Griekenland werden berichten verzonden met behulp van optische telegrafie (met behulp van fakkels). Voor elke letter van het bericht werd eerst het aantal fakkels verhoogd dat overeenkomt met het rijnummer van de letter en vervolgens het kolomnummer.

Tabel 4.1. Frequentie van verschijnen van Russische letters in teksten

Nee.BriefFrequentie, %Nee.BriefFrequentie, %
1 OVER10.97 18 B1.74
2 E8.45 19 G1.70
3 A8.01 20 Z1.65
4 EN7.35 21 B1.59
5 N6.70 22 H1.44
6 T6.26 23 Y1.21
7 MET5.47 24 X0.97
8 R4.73 25 EN0.94
9 IN4.54 26 Sch0.73
10 L4.40 27 Yu0.64
11 NAAR3.49 28 C0.48
12 M3.21 29 SCH0.36
13 D2.98 30 E0.32
14 P2.81 31 F0.26
15 U2.62 32 Kommersant0.04
16 I2.01 33 Jo0.04
17 Y1.90

Er zijn vergelijkbare tabellen voor letterparen (bigrams). Veel voorkomende bigrams zijn bijvoorbeeld ‘to’, ‘but’, ‘st’, ‘po’, ‘en’, etc. Een andere techniek voor het kraken van cijfergrammen is gebaseerd op het elimineren van mogelijke lettercombinaties. In teksten (als ze zonder spelfouten zijn geschreven) kun je bijvoorbeeld de combinaties “chya”, “shchi”, “b”, enz. niet vinden.

Om de taak van het breken van één-op-één vervangende cijfers te bemoeilijken, werden zelfs in de oudheid spaties en/of klinkers vóór de codering uitgesloten van de originele berichten. Een andere methode die het openen bemoeilijkt, is encryptie bigramen(in paren van letters).

4.3. Polygramcijfers

Polygramvervangingscijfers- dit zijn cijfers waarbij één cijfervervanging overeenkomt met meerdere tekens van de brontekst tegelijk.

Bigram Cipher-poorten. Het Porta-cijfer, gepresenteerd in tabelvorm, is het eerste bekende bigram-cijfer. De grootte van zijn tafel was 20 x 20 cellen; het standaardalfabet was bovenaan horizontaal en verticaal links geschreven (het bevatte niet de letters J, K, U, W, X en Z). In de tabelcellen konden alle cijfers, letters of symbolen worden geschreven - Giovanni Porta gebruikte zelf symbolen - op voorwaarde dat de inhoud van geen van de cellen werd herhaald. Met betrekking tot de Russische taal kan de tabel met cijfervervangingen er als volgt uitzien.


ABINGDE
(Jij)
ENZEN
(J)
NAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuI
A001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
B032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062
IN063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093
G094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
D125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
HAAR)156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
EN187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
Z218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
ik (Y)249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
NAAR280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310
L311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
M342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372
N373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403
OVER404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434
P435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465
R466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496
MET497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527
T528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558
U559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589
F590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620
X621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651
C652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682
H683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713
Sch714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744
SCH745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775
Kommersant776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806
Y807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837
B838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868
E869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899
Yu900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930
I931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961

Afb.4.10. Cipher-vervangingstabel voor het poortcijfer

De codering wordt uitgevoerd met behulp van letterparen van het originele bericht. De eerste letter van het paar geeft de rij voor het vervangen van cijfers aan, de tweede - de kolom. Als het oorspronkelijke bericht een oneven aantal letters bevat, wordt er een hulpteken (“leeg teken”) aan toegevoegd. Bijvoorbeeld het originele bericht "AB RA MO V", gecodeerd - "002 466 355 093". De letter “I” wordt gebruikt als hulpsymbool.

Playfair-cijfer (Engels: “Fair game”). Begin jaren 1850. Charles Wheatstone vond het zogenaamde "rechthoekige cijfer" uit. Leon Playfair, een goede vriend van Wheatstone, sprak over dit cijfer tijdens een officieel diner in 1854 met de minister van Binnenlandse Zaken, Lord Palmerston, en prins Albert. En aangezien Playfair goed bekend was in militaire en diplomatieke kringen, werd de naam “Playfair cipher” voor altijd toegekend aan de creatie van Wheatstone.

Dit cijfer was het eerste alfabetische bigramcijfer (Porta's bigramtabel gebruikte symbolen, geen letters). Het was ontworpen om de geheimhouding van telegraafcommunicatie te waarborgen en werd door Britse troepen gebruikt in de Boerenoorlog en de Eerste Wereldoorlog. Het werd ook gebruikt door de kustwacht van de Australische eilanden tijdens de Tweede Wereldoorlog.

Het cijfer zorgt voor de codering van paren symbolen (digrammen). Dit cijfer is dus beter bestand tegen kraken in vergelijking met een eenvoudig substitutiecijfer, aangezien frequentieanalyse moeilijker is. Het kan worden uitgevoerd, maar niet voor 26 mogelijke tekens (Latijns alfabet), maar voor 26 x 26 = 676 mogelijke bigrams. Bigram-frequentieanalyse is mogelijk, maar is aanzienlijk moeilijker en vereist een veel grotere hoeveelheid cijfertekst.

Om een ​​bericht te versleutelen, is het noodzakelijk om het op te splitsen in bigrams (groepen van twee tekens), en als er twee identieke symbolen in het bigram worden gevonden, wordt daartussen een vooraf overeengekomen hulpsymbool toegevoegd (in het origineel - X, voor het Russische alfabet - I). 'Gecodeerd bericht' wordt bijvoorbeeld 'gecodeerd bericht' I mededeling I" Om een ​​sleuteltabel te vormen, wordt een slogan geselecteerd en vervolgens ingevuld volgens de regels van het Trisemus-coderingssysteem. Voor de slogan “UNCLE” ziet de sleuteltabel er bijvoorbeeld zo uit.

DIENNAB
INGEJoENZ
YNAARLMOVERP
RMETTUFX
CHSchSCHKommersantY
BEYu- 1 2

Afb.4.11. Sleuteltabel voor het Playfair-cijfer

Vervolgens worden, op basis van de volgende regels, de karakterparen in de brontekst gecodeerd:

1. Als de bigramsymbolen van de brontekst op één regel voorkomen, worden deze symbolen vervangen door de symbolen in de dichtstbijzijnde kolommen rechts van de overeenkomstige symbolen. Als het teken het laatste teken op een regel is, wordt het vervangen door het eerste teken van dezelfde regel.

2. Als de bigram-tekens van de brontekst in één kolom voorkomen, worden ze omgezet naar de tekens van dezelfde kolom die zich er direct onder bevindt. Als een teken het onderste teken in een kolom is, wordt het vervangen door het eerste teken van dezelfde kolom.

3. Als de bigram-symbolen van de brontekst zich in verschillende kolommen en verschillende rijen bevinden, worden ze vervangen door symbolen die zich in dezelfde rijen bevinden, maar overeenkomen met andere hoeken van de rechthoek.

Versleutelingsvoorbeeld.

Het bigram "voor" vormt een rechthoek - het wordt vervangen door "zhb";

Het bigram "shi" staat in één kolom - vervangen door "yu";

Het bigram “fr” staat op één regel - het wordt vervangen door “xc”;

Het bigram “ov” vormt een rechthoek - het wordt vervangen door “yzh”;

Het bigram “an” staat op één regel - vervangen door “ba”;

Het bigram "maar" vormt een rechthoek - het wordt vervangen door "ben";

Het bigram “es” vormt een rechthoek - het wordt vervangen door “gt”;

Het bigram “oya” vormt een rechthoek - het wordt vervangen door “ka”;

Het bigram "ongeveer" vormt een rechthoek - het wordt vervangen door "pa";

Het bigram “shche” vormt een rechthoek - het wordt vervangen door “shyo”;

Het bigram “ni” vormt een rechthoek - het wordt vervangen door “an”;

Het bigram “ee” vormt een rechthoek en wordt vervangen door “gi”.

De code is "zhb yue xs yzh ba am gt ka pa she an gi."

Om te decoderen moet je de omkering van deze regels gebruiken, waarbij je de karakters weggooit I(of X) als ze niet kloppen in het oorspronkelijke bericht.

Het bestond uit twee schijven: een externe vaste schijf en een interne beweegbare schijf, waarop de letters van het alfabet waren gedrukt. Het coderingsproces omvatte het vinden van de leesbare letter op de externe schijf en deze te vervangen door de letter van de interne schijf eronder. Hierna werd de interne schijf één positie verschoven en werd de tweede letter gecodeerd met behulp van het nieuwe cijferalfabet. De sleutel tot dit cijfer was de volgorde van de letters op de schijven en de beginpositie van de interne schijf ten opzichte van de externe.

Trisemus-tafel. Een van de cijfers uitgevonden door de Duitse abt Trisemus was een multi-alfabetisch cijfer gebaseerd op de zogenaamde "Trisemus-tabel" - een tabel met zijden gelijk aan N, Waar N– het aantal tekens in het alfabet. In de eerste rij van de matrix worden de letters geschreven in de volgorde van hun volgorde in het alfabet, in de tweede - dezelfde reeks letters, maar met een cyclische verschuiving van één positie naar links, in de derde - met een cyclische verschuiving verschuiving met twee posities naar links, enz.

ABINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuI
BINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIA
INGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIAB
GDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABIN
DEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABING
EJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGD
JoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDE
ENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJo
ZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoEN
ENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZ
YNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZEN
NAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZENY
LMNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAAR
MNOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARL
NOVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLM
OVERPRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMN
PRMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVER
RMETTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERP
METTUFXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPR
TUFXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPRMET
UFXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPRMETT
FXCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPRMETTU
XCHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPRMETTUF
CHSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPRMETTUFX
HSchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPRMETTUFXC
SchSCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPRMETTUFXCH
SCHKommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSch
KommersantYBEYuIABINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCH
YBEYuIABINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersant
BEYuIABINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantY
EYuIABINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYB
YuIABINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBE
IABINGDEJoENZENYNAARLMNOVERPRMETTUFXCHSchSCHKommersantYBEYu

Afb.4.17. Trisemus-tafel

De eerste regel is ook een alfabet voor letters in platte tekst. De eerste letter van de tekst wordt gecodeerd op de eerste regel, de tweede letter op de tweede, enzovoort. Nadat ze de laatste regel hebben gebruikt, keren ze terug naar de eerste. Het bericht “ABRAMOV” zal dus de vorm “AVTGRUZ” aannemen.

Vigenère-coderingssysteem. In 1586 presenteerde de Franse diplomaat Blaise Vigenère aan de commissie van Hendrik III een beschrijving van een eenvoudig maar tamelijk sterk cijfer, gebaseerd op de Trisemus-tabel.

Vóór de codering wordt een sleutel geselecteerd uit alfabetische tekens. De coderingsprocedure zelf is als volgt. Het i-de teken van het geopende bericht in de eerste regel bepaalt de kolom, en het i-de teken van de sleutel in de meest linkse kolom bepaalt de rij. Op het snijpunt van de rij en de kolom wordt het i-de teken in het cijfergram geplaatst. Als de sleutellengte kleiner is dan het bericht, wordt deze opnieuw gebruikt. Het originele bericht is bijvoorbeeld “ABRAMOV”, de sleutel is “UNCLE”, de coderingscode is “DAFIYOYE”.

In alle eerlijkheid moet worden opgemerkt dat het auteurschap van dit cijfer toebehoort aan de Italiaan Giovanni Battista Bellaso, die het in 1553 beschreef. De geschiedenis “negeerde een belangrijk feit en noemde het cijfer naar Vigenère, ondanks het feit dat hij niets deed om het te creëren. .” Bellazo stelde voor om een ​​geheim woord of een geheime zin te noemen wachtwoord(Italiaans wachtwoord; Frans voorwaardelijk woord).

In 1863 publiceerde Friedrich Kasiski een algoritme om dit cijfer aan te vallen, hoewel er al eerder gevallen bekend zijn waarin zijn cijfer werd gebroken door enkele ervaren cryptanalisten. In het bijzonder werd het cijfer in 1854 gekraakt door de uitvinder van de eerste analytische computer, Charles Babbage, hoewel dit feit pas in de 20e eeuw bekend werd, toen een groep wetenschappers de berekeningen en persoonlijke aantekeningen van Babbage analyseerde. Desondanks had het Vigenère-cijfer lange tijd de reputatie extreem resistent te zijn tegen handmatig kraken. Zo noemde de beroemde schrijver en wiskundige Charles Lutwidge Dodgson (Lewis Carroll) in zijn artikel 'The Alphabetic Cipher', gepubliceerd in een kindertijdschrift in 1868, het Vigenère-cijfer onbreekbaar. In 1917 beschreef het populair-wetenschappelijke tijdschrift Scientific American het Vigenère-cijfer ook als onbreekbaar.

Roterende machines. De ideeën van Alberti en Bellaso werden in de eerste helft van de twintigste eeuw gebruikt om elektromechanische roterende machines te creëren. Sommigen van hen werden tot de jaren tachtig in verschillende landen gebruikt. De meeste van hen gebruikten rotoren (mechanische wielen), waarvan de relatieve positie het huidige cijferalfabet bepaalde dat werd gebruikt om de vervanging uit te voeren. De bekendste van de roterende machines is de Duitse Enigma-machine uit de Tweede Wereldoorlog.

De uitgangspinnen van de ene rotor zijn verbonden met de ingangspinnen van de volgende rotor en wanneer het oorspronkelijke berichtensymbool op het toetsenbord wordt ingedrukt, wordt een elektrisch circuit voltooid, waardoor het lampje met het cijfervervangingssymbool oplicht.

Afb.4.19. Enigma-rotorsysteem [www.cryptomuseum.com]

Het versleutelingseffect van de Enigma wordt getoond voor twee toetsen die achter elkaar worden ingedrukt: de stroom vloeit door de rotoren, wordt "gereflecteerd" door de reflector en vervolgens weer door de rotoren.

Afb.4.20. Versleutelingsschema

Opmerking. De grijze lijnen tonen andere mogelijke elektrische circuits binnen elke rotor. Brief A wordt anders gecodeerd wanneer opeenvolgende toetsaanslagen worden gemaakt, eerst in G, dan binnen C. Het signaal neemt een andere route vanwege de rotatie van een van de rotors nadat op de vorige letter van het oorspronkelijke bericht is gedrukt.

3. Beschrijf de soorten vervangingscijfers.

Webontwerpers en -ontwikkelaars houden ervan om jargon en duistere zinnen te gebruiken die soms moeilijk voor ons te begrijpen zijn. Dit artikel zal zich richten op semantische code. Laten we uitzoeken wat het is!

Wat is semantische code?

Zelfs als u geen webontwerper bent, weet u waarschijnlijk dat uw site in HTML is geschreven. HTML was oorspronkelijk bedoeld als middel om de inhoud van een document te beschrijven, en niet om het er visueel aantrekkelijk uit te laten zien. Semantische code keert terug naar dit oorspronkelijke concept en moedigt webontwerpers aan om code te schrijven die de inhoud beschrijft, in plaats van hoe deze eruit zou moeten zien. De paginatitel kan bijvoorbeeld als volgt worden geprogrammeerd:

Dit is de paginatitel

Dit zou de titel groot en vetgedrukt maken, waardoor het lijkt op een paginatitel, maar er staat niets in dat het beschrijft als een “titel” in de code. Dit betekent dat de computer het niet kan herkennen als de titel van de pagina.

Wanneer we een titel semantisch schrijven, moeten we de volgende code gebruiken, zodat de computer deze als een “titel” kan herkennen:

Dit is de titel

Het uiterlijk van de header kan worden gedefinieerd in een apart bestand genaamd “cascading style sheets” (CSS), zonder uw beschrijvende (semantische) HTML-code te verstoren.

Waarom is semantische code belangrijk?

Het vermogen van de computer om inhoud correct te herkennen is om verschillende redenen belangrijk:

  • Veel slechtziende mensen vertrouwen op spraakbrowsers om pagina's te lezen. Dergelijke programma's zullen pagina's niet nauwkeurig kunnen interpreteren tenzij ze duidelijk zijn uitgelegd. Met andere woorden, semantische code dient als middel voor toegankelijkheid.
  • Zoekmachines moeten begrijpen waar uw inhoud over gaat om u correct te kunnen rangschikken in zoekmachines. Semantische code heeft de reputatie de plaatsingen in zoekmachines te verbeteren, omdat deze gemakkelijk wordt begrepen door crawlers van zoekmachines.

Semantische code heeft ook andere voordelen:

  • Zoals je in het bovenstaande voorbeeld kunt zien, is de semantische code korter en gaat het laden sneller.
  • Semantische code maakt site-updates eenvoudiger omdat u koptekststijlen op de hele site kunt toepassen in plaats van per pagina.
  • Semantische code is gemakkelijk te begrijpen, dus als een nieuwe webontwerper de code oppikt, kan hij deze gemakkelijk analyseren.
  • Omdat semantische code geen ontwerpelementen bevat, is het mogelijk om het uiterlijk van een website te wijzigen zonder alle HTML opnieuw te coderen.
  • Nogmaals, omdat het ontwerp gescheiden wordt gehouden van de inhoud, stelt semantische code iedereen in staat pagina's toe te voegen of te bewerken zonder dat daarvoor een goed oog voor ontwerp nodig is. U beschrijft eenvoudig de inhoud en CSS bepaalt hoe die inhoud eruit zal zien.

Hoe kunt u ervoor zorgen dat een website semantische code gebruikt?

Er is momenteel geen tool die kan controleren op semantische code. Het komt allemaal neer op het controleren op kleuren, lettertypen of lay-outs in de code in plaats van op het beschrijven van de inhoud. Als codeanalyse eng klinkt, is het een goed startpunt om uw webontwerper te vragen: codeert hij met semantiek in gedachten? Als hij je wezenloos aankijkt of belachelijk begint te kletsen, dan kun je er zeker van zijn dat hij niet op deze manier codeert. Op dit moment moet je beslissen of je hem een ​​nieuwe richting in zijn werk wilt geven, of een nieuwe ontwerper wilt zoeken?!

Semantiek(Franse sémantique van het oudgriekse σημαντικός - aanduiding) - de wetenschap van het begrijpen van bepaalde tekens, reeksen symbolen en andere symbolen. Deze wetenschap wordt op veel gebieden gebruikt: taalkunde, proxemics, pragmatiek, etymologie, enz. Ik kan me niet voorstellen wat deze woorden betekenen en wat al deze wetenschappen doen. En het maakt niet uit, ik ben geïnteresseerd in de kwestie van het gebruik van semantiek in de lay-out van websites.

Opmerking

Ik zal hier niet ingaan op de term Semantisch Web. Op het eerste gezicht lijkt het misschien dat de onderwerpen Semantisch Web en semantische HTML-code bijna hetzelfde zijn. Maar in feite is het Semantische Web een nogal filosofisch concept en heeft het niet veel gemeen met de huidige realiteit.

Semantische lay-out - wat is het?

In een taal heeft elk woord een specifieke betekenis en doel. Als u 'worst' zegt, bedoelt u een voedingsproduct dat bestaat uit gehakt (meestal vlees) in een langwerpig omhulsel. Kortom, je bedoelt worst, geen melk of groene erwten.

HTML is ook een taal; de “woorden” die tags worden genoemd, hebben ook een bepaalde logische betekenis en doel. Om deze reden allereerst semantische HTML-code is een lay-out met het juiste gebruik van HTML-tags, door ze te gebruiken voor het beoogde doel, zoals ze bedoeld zijn door de ontwikkelaars van de HTML-taal en webstandaarden.

microformats.org is een gemeenschap die eraan werkt om de idealistische ideeën van het Semantische Web tot leven te brengen door de pagina-indeling dichter bij diezelfde semantische idealen te brengen.

Waarom en wie heeft überhaupt semantische lay-out nodig?

Als de informatie op mijn website op dezelfde manier wordt weergegeven als op het ontwerp, waarom zou je dan je hersens pijnigen en nadenken over een of andere vorm van semantiek?! Dit is extra werk! Wie heeft dit nodig?! Wie zal dit waarderen, behalve een andere lay-outontwerper?

Dergelijke vragen hoorde ik vaak. Laten we het uitzoeken.

Semantische HTML voor webontwikkelaars

Semantische code voor gebruikers

Verhoogt de beschikbaarheid van informatie op de site. Dit is allereerst van belang voor alternatieve middelen zoals:

  • semantische code heeft rechtstreeks invloed op de hoeveelheid HTML-code. Minder code -> lichtere pagina's -> sneller laden, minder RAM vereist aan de gebruikerskant, minder verkeer, kleinere databasegrootte. De site wordt sneller en goedkoper.
  • spraakbrowsers voor wie tags en hun attributen belangrijk zijn om de inhoud correct en met de juiste intonatie uit te spreken, of juist niet te veel te zeggen.
  • mobiele apparaten die CSS niet volledig ondersteunen en daarom voornamelijk afhankelijk zijn van HTML-code, en deze op het scherm weergeven volgens de gebruikte tags.
  • afdrukapparaten zelfs zonder extra CSS zal de informatie met een betere kwaliteit worden afgedrukt (dichter bij het ontwerp), en het creëren van de ideale versie voor afdrukken zal een paar eenvoudige manipulaties met CSS worden.
  • Daarnaast zijn er apparaten en plug-ins waarmee je snel door een document kunt navigeren - bijvoorbeeld op koppen in Opera.

Semantische HTML voor machines

Zoekmachines verbeteren voortdurend hun zoekmethoden om ervoor te zorgen dat de resultaten de gewenste informatie bevatten. echt kijken gebruiker. Semantische HTML maakt dit mogelijk omdat... leent zich voor een veel betere analyse - de code is overzichtelijker, de code is logisch (je kunt duidelijk zien waar de koppen staan, waar de navigatie is, waar de inhoud is).

Goede inhoud plus semantische lay-out van hoge kwaliteit is al een serieuze toepassing goede posities in de zoekresultaten van zoekmachines.

De semantiek van HTML-code is altijd een hot topic. Sommige ontwikkelaars proberen altijd semantische code te schrijven. Anderen bekritiseren dogmatische aanhangers. En sommigen hebben zelfs geen idee wat het is en waarom het nodig is. Semantiek wordt in HTML gedefinieerd in tags, klassen, ID's en attributen die het doel beschrijven, maar niet de exacte inhoud specificeren die ze bevatten. Dat wil zeggen, we hebben het over het scheiden van inhoud en formaat.

Laten we beginnen met een duidelijk voorbeeld.

Slechte codesemantiek

Titel van artikel
En de auteur
Inko Gnito.

Goede code-semantiek

Titel van artikel

De tekst van een artikel dat door iemand is geschreven. Inko Gnito- de auteur.

Of u nu denkt dat HTML5 klaar is voor gebruik of niet, het gebruik van de

in dit geval zal het aantrekkelijker zijn dan normaal
die de klas aangeeft. De titel van het artikel wordt de titel, de inhoudsopgave wordt de alinea en de vetgedrukte tekst wordt de tag. .

Maar niet alles wordt zo duidelijk weergegeven door HTML5-tags. Laten we eens naar een reeks klassennamen kijken en kijken of ze aan de semantische vereisten voldoen.

Geen semantische code. Dit is een klassiek voorbeeld. Elke CSS-rasterwerkbank gebruikt dit soort klassenamen om rasterelementen te definiëren. Of het nu "yui-b", "grid-4" of "spanHalf" is: dergelijke namen zijn dichter bij het specificeren van markup dan bij het beschrijven van inhoud. Het gebruik ervan is echter in de meeste gevallen onvermijdelijk bij het werken met modulaire rastersjablonen.

Semantische code. De voettekst heeft een sterke betekenis gekregen in webdesign. Dit is het onderste deel van de pagina, dat elementen bevat zoals herhaalde navigatie, gebruiksrechten, auteursinformatie, enzovoort. Deze klasse definieert een groep voor al deze elementen zonder ze te beschrijven.

Als u bent overgestapt op het gebruik van HTML5, kunt u beter het element gebruiken

in dergelijke gevallen. De opmerking is ook van toepassing op alle andere delen van de webpagina (de kop moet
, zijbalk -