- Stahuj zápisky z přednášek a ostatní studijní materiály
- Zapisuj si jen kvalitní vyučující (obsáhlá databáze referencí)
- Nastav si své předměty a buď stále v obraze
- Zapoj se svojí aktivitou do soutěže o ceny
- Založ si svůj profil, aby tě tví spolužáci mohli najít
- Najdi své přátele podle místa kde bydlíš nebo školy kterou studuješ
- Diskutuj ve skupinách o tématech, které tě zajímají
Studijní materiály
Hromadně přidat materiály
Projekt v matlabu - šifry
APRG - Algoritmizace a programování
Hodnocení materiálu:
Zjednodušená ukázka:
Stáhnout celý tento materiáloměná text když si chcete ušetřit opisování přeloženého textu (zadání proměné text funguje jen u směru 2, protože při směru 1 není vet šinou proměná text naplněna), dále klic zadává se jako kladné celé číslo, a nakonec smer zadává se bud 1 pro zašifrování a nebo smer 2 rozšifrování Ukázka kousku kódu a k němu vývojoví diagram.Hlavička funkce : function text=Transpozicni_sifra(x,klic,smer)%Cyklus pro naplnění matice zadaným textem a doplnění prázdných míst %když se počet míst v matici neshoduje s počtem písmen textu for i=1:1:B%cyklus který se bude opakovat podle velikosti prom. B(je to jedna ze souřadnic matice) for r=1:klic%cyklus který se bude opakovat podle velikosti klíče (je to druhá souřadnice matice) if delka>n;%Pokud je počitadlo vetší než délka textu tak se na matice(i,r)='x';%souřadnice i,r matice vloží písmeno x else matice(i,r)=x(delka);%na souřadnice i,r matice se vloží písmeno z vektoru x(na místě podle velikosti prom. délka) delka=delka+1;%počítadlo k proměné délka se přičte jednička end end end ot=matice';%transponování matice podle diagonály a přiřazení do proměné ot ascii = ot;%převedení matice ot do proměné asciiVstupními argumenty jsou x,klic,smer. x je textoví řetězec, klic celé nezáporné číslo, smer 1,2 podle směru šifrování, nebo odšifrování a výstupní text možnost zadání na vstup při odšifrováváníVývojový diagram k části funkce Transpozicni_sifraObr. 3 Vývojový diagram části funkce Transpozicni_sifraFunkce : Vernamova_sifraTato funkce je na zakódování správy, která mu byla zadána. Jak šifra pracuje, je popsáno výše. Ale jen pro pořádek v rychlosti co tato funkce přesně dělá. Načte uživatelem zadaný text. Ten převede na dekadické číslo z ascii tabulky. Toto číslo se převede na binární číslo. Vedlejší funkce klic_sifry se postará o vygenerování náhodného čísla podle velikosti binárního čísla (která by mělo byt stále stejné sice, ale je to zde pro jistotu ošetřeno). Pak se provede jejich logický součin XOR. A klíč s zakódovaným textem se vypíše. Má jeden vstupy text. Ten se zadává jako řetězec příklad zadání a spuštění funkce [klice,text]=Vernamova_sifra(‘Ahoj svete‘.)Hlavička funkce :function [klice,text]=Vernamova_sifra(text)function [klice,text]=Vernamova_sifra(text)%Má jeden vstupy text. Ten se zadává jako řetězec příklad zadání a%spuštění funkce [klice,text]=Vernamova_sifra(‘Ahoj svete‘.)%Funkce vám zakóduje vámi zadaný text.%Ale pozor na názvy výstupní poměných musí byt zapsány přesně a nebo si je%musíte pamatovat pro další použití%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxcislo=[];%Proměná se vyprázdnívypis=[]; %Proměná se vyprázdnívypisk=[];%Proměná se vyprázdnístat=[];%Proměná se vyprázdníjedna=0;%Proměná se vyprázdní n=length(text);%Zjistí se počet řádku buňkového pole textvektor=ones(1,n);%Vygenerování prázdného vektoru pro urychlení programu o velikosti 1 řádek a n-sloupců %cyklus na naplnění proměné vektor zadaným textem a převod textu na čísla%podle asciifor i= 1:n;%bude se opakovat podle velikosti n proměné vektor(i)=text(i);%zadaný text se postupně přiřazuje vektoru vektorendm=length(vektor);%Zjištění délky proměné vektorbinar=cell(m, 1);%Vygenerování prázdného buňkového pole pro urychlení programu o velikostí m-řádku a 1 sloupec %Cyklus na převod z dekadické soustavy na binárnífor i=1:m pomoc=vektor(i);%do pomocné proměné se přiřadí jedno číslo pro převod while pomoc~=0%dokud pomocná proměná nebude rovna 0 tak z=mod(pomoc,2);%zjištění jestli je po dělení zbytek nebo ne cislo=[cislo z];%z proměné se zbytek nebo 0 uloží do proměné číslo pomoc=floor(pomoc/2);%číslo se zaokrouhlí dolu a přidá se zpět do proměné pomoc end fe=length(cislo);%zjištění délky vektoru číslo %cyklus na zajištění stejně dlouhých řetězců while fe~=7%dokud fe proměná nebude rovna 7 tak cislo=[cislo 0];%tak se za vektor přidá 0 fe=length(cislo);%zjištění délky vektoru číslo end bin = fliplr(cislo);%stranové přetočení proměné bin, kvůli pořadí binárních čísel binar{i,1}= bin;%na řádek i-tý se uloží obsah proměné bin cislo=[];%vyprázdní se ptože sní bude dále pracovánoend[klice] = klic_sifry(binar,m);%zavolání funkce pro generování náhodného klíčedelka=length(klice);%zjištění počtu řádku bunkového pole klíce %cyklus který obsah buňkového pole po řádcích přiřadí vektoru klicefor z=1:delka%bude se opakovat podle velikosti proměné delka vypis=[vypis; klice{z,1}];%k vektor vypis se přidá další rádek a vloží se tam obsah proměné kliceend text=cell(m, 1);%Vygenerování prázdného bunkového pole pro urychlení programu o velikosto m-řádku a 1 sloupec %cyklus na zakodování podle klicefor d=1:m a=klice{d,1};%Načte se d-tý řádek klice(vektor)do proměné A b=binar{d,1};%Načte se d-tý řádek binar(vektor)do proměné B e=xor(a,b);%Provede se logický součin obou vektorů A a B a uloží se do proměné e text{d,1}=e;%Do bunkového pole se po řádcích ukladáji vysledky z proměné eenddelka=length(text);%zjištění počet řádku bunkového pole %cyklus který obsah bunkového pole po řádcích přiřadí vektorufor q=1:delka;%bude se opakovat podle velikosti delka proměné vypisk=[vypisk; text{q,1}];%k vektor vypis se přidá další rádek a vloží se tam obsah proměné text stat=[stat text{q,1}];%k vektor stat se vloží obsah proměné textendst=length(stat);%zjištění delky proměné stat%cyklus pro spočtení kolik je v řetezci jedničekfor ci=1:st%opakuje se podle velikosti stif stat(ci)==1%pokud je ci-tým místě vektoru stat jednička tak jedna=jedna +1;%počitadlo se navíší o jednoendendstatistika1=(jedna/st)*100;statistika0=100-((jedna/st)*100);disp('Procentuální zastoupení nul a jedniček v zakodovaném textu')%Vypíše se text v závorkáchdisp('Jedniček je:')%Vypíše se text v závorkáchdisp(statistika1) %Vypíše se text v z proměné statistika1disp('Nul je:')%Vypíše se text v závorkáchdisp(statistika0)%Vypíše se text v z proměné statistika0disp('Zakodovaný váš text')%Vypíše se text v závorkáchdisp(vypisk)%Vypíše se text v z proměné vypiskdisp('Náhodně vygenerovany klic')%Vypíše se text v závorkáchdisp(vypis)%Vypíše se
Vloženo: 25.05.2011
Velikost: 188,64 kB
Komentáře
Tento materiál neobsahuje žádné komentáře.
Mohlo by tě zajímat:
Skupina předmětu APRG - Algoritmizace a programování
Reference vyučujících předmětu APRG - Algoritmizace a programování
Podobné materiály
- BRR1 - Řízení a regulace 1 - Různé projekty
- BRR1 - Řízení a regulace 1 - Všechny moje projekty
- BRR1 - Řízení a regulace 1 - Projekt 3
- BRR1 - Řízení a regulace 1 - Projekt
- BRR1 - Řízení a regulace 1 - Projektt
- BPC2 - Počítače a programování 2 - Projekty 08
- BNEZ - Napájení elektronických zařízení - Vzorový projekt napájecího zdroje BNEZ 2010
- BPC2 - Počítače a programování 2 - VSECHNY PROJEKTY DO BPC2
- APRG - Algoritmizace a programování - Projekt v matlabu - morse
- BMA3 - Matematika 3 - Projekt2_skupina3
- BMA3 - Matematika 3 - Projekt2_skupina2
- BMA3 - Matematika 3 - Projekt2_skupina5
- BMA3 - Matematika 3 - Projekt2_skupina11
- BMA3 - Matematika 3 - Projekt2_skupina8
- BMA3 - Matematika 3 - Projekt2_skupina9
- BMA1 - Matematika 1 - Projekt2_verze1
- BMA1 - Matematika 1 - Projekt2_verze2
- BEVA - Elektromagnetické vlny, antény a vedení - BEVA_Projekt
- BEVA - Elektromagnetické vlny, antény a vedení - BEVA projekt c08
- MCVT - CAD ve vysokofrekvenční a mikrovlnné technice - Projekt MCVT planární pásmová propust
Copyright 2025 unium.cz


