- 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áltext v z proměné vypis endNa konci skriptu je vidět matematická rovnice pro spočítány procentuálního zastoupení jedniček v zakódovaném textu. Je to vlastně počet jedniček obsažených v řetězci /celková délka řetězce * 100 a to vše se uloží do proměné statistika1 Výpočet viz vzorec (1). statistika1=jednast*100A výpočet procentuálního zastoupení nul v zakódovaném textuVýpočet viz vzorec (2)statistika0=100-jednast*100Vstupními argumenty je text. Zadává se jako textoví řetězec. A výstupní argumenty text a klic. Pro použití v následující funkceFunkce : Vernamova_sifrapTato funkce je na překlad zakódovaného textu pomocí klíče, který byl při kódování vygenerován na původně zadaný text. Má dva vstupy text a klic. Aby se nemusel zdlouhavě zadávat klíč a zakódovaný text. Jelikož je v binární podobě tak je celkem dlouhý a jen malá chyba by zapříčinila špatné rozhodování. Proto se při překladu vašeho textu předchozí funkci uloží do poměných klíč – váš náhodně vygenerovaný klíč a text-váš zakódovaný text. Ty se zde automaticky načtou a začne se s překladem. Pozor ale můžete si tyto proměné v předchozí funkci pojmenovat jinak, proto dbejte a dávejte pozor na jména. A funkce tedy vezme zakódovaný text a klíč a znak po znaku provede XOR těchto dvou vektoru. Vektor, který vznikne, se převede podle pravidel převodu z binární na dekadickou soustavu. Toto vzniklé číslo se pomocí ascii tabulky převede zpátky na znak. Tak se postup opakuje až je odkódován celí původní text Funkce se zapíná příkazem Vernamova_sifrap(text,klic) když jste dodržely jména proměnných po odentrování se odkóduje váš zakódovaný textHlavička funkce : function Vernamova_sifrap(text,klic)function Vernamova_sifrap(text,klic)%Funkce [puvodni]=Vernamova_sifrap(text,klic)%je to funkce která po správném zadání zakodovaného textu a jeho klice%odkoduje zašifrovanou zprávu. Pro používání funkce se po%zakodování funkci [klice,text]=Vernamova_sifra(text) se uloží do proměné%klice se uloží klíč a do proměné text váš zakodovaný text. Výstupní%proměné si mužete pojmenovat libovolně ale dbejte na to aby jste pak%zadali jejich názvy před spuštěním teto funkce správně a ve správném%pořadí jinak vám nebude rozšifrování fungovat. Proměná text a klic jsou%používání jako bunková pole.%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx n=length(text);%Zjistí se počet řádku buňkového pole textfinal=ones(1,n);%Vygenerování prázdného vektoru pro urychlení programu o velikost 1 řádek a n-sloupcůbinar=cell(n,1);%Vygenerování prázdného bunkového pole pro urychlení programu o velikost n-řádku a 1 sloupecfor d=1:n;%Cyklus který je na převod zakodovaného textu pomocí klice na odkodovaný binarní kod A=klic{d,1};%Načte se d-tý řádek klice(vektor)do proměné A B=text{d,1};%Načte se d-tý řádek textu (vektor) textu 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 binar{d,1}=e;%Do bunkového pole se po řádcích ukladáji vysledky z proměné eend%Konec cyklu for i=1:n;%Cyklus který převede binární číslo už odkodované na číslo dekadické pro převod pomocí ascii tabulky na znaky bud=0;%Proměná bud se vynuluje aby byla vždy na začátku cyklunulová log=1;%Do promění log se načtě jednička, protože je ve vzorci kde se násobý. preklad=binar{i,1};%Do proměné preklad se načte i-tý vektor z bunkového pole co má byt přeložen na dekadickou soustavu delka=length(preklad);%Do proměné delka se uloží velikost proměné překlad for l=delka:-1:1%Cyklus který se bude opakovat od velikosti hodnoty delky z krokem -1 po jedničku bude = preklad(l)*log;%Do proměné bude se uloží(jedno číslo z vektoru který je uložen v proměné preklad * proměná log) bud= bud + bude;%K proměné bud se přičte hodnota proměnébude log=log*2;%Proměná log je vynásobena 2x aby bylyzajištěny hodnoty(1,2,4,8,16...) endfinal(i)=bud;%Do proměné final se ukládá puvodní datavektoru final a za ne se přiřadí hodnota proměné budendpuvodni=char(final);%Převede čísel v proměné final na znaky podle asciitabulkydisp(['Váš puvodní text: ' puvodni])%Vypíše text a obsah proměné puvodniendVstupními argumenty jsou klic a text. Tyto argumenty jsou požadovány jako buňková pole a výstupní nejsou u této funkce potřebaFunkce : klic_sifryTato funkce je pomocnou, ale značně potřebnou. Protože po předchozím překladu zadaného textu, se každý znak jednotlivě převede na binární číslo. To je uloženo v proměné kod. Postupně jsou tyto čísla zde načítána zjištěna jejich délka . Tato délka se uloží do proměné k a podle velikosti této promění se vygeneruje náhodně tak dlouhý binární kód aby odpovídal velikosti proměné k. Každá část vygenerovaného kódu se uloží do buňkového pole klice na řádek určený proměnou i. A nakonec se tento klíč předá proměné klic. A ta se předává zpět funkci která tuto funkci vyvolala.Hlavička funkce : function[klic]= klic_sifry(kod,m)function[klic]= klic_sifry(kod,m)%Funkce [klic]= klic_sifry(kod,m)%Jsou zde dva vstupní argumenty %Proměná kod je to kód který bude v budoucnu zakódován je načítán z funkce %Vernamova_sifra%Proměná m která určuje počet řádku buňkového pole také se načítá z funkce %Vernamova_sifra.%Funkce vygeneruje ke každému zadanému znaku jeho speciální a náhodný klíč.%xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxklice=cell(m,1); %vygenerování buňkového pole pro urychleni programufor i=1:m %podle velikosti m se bude cyklus opakovat k=length(kod{m,1}); %vybere se m-tý řádek v buňkovém poli kód a zjistí jeho velikost. A tu přiřadí do proměné k fan= randi([0,1],1,k); %do proměné fan se vygenerují náhodná čísla 0,1 a bude jich tolik kolik je velikost proměné k. klice{i,1}= fan; %do buňkového pole se na i-tý řádek přidá vektor čísel z proměné fan klic=klice; %do proměné klic se přesune obsah proměné kliceend Vstupními argumenty jsou kod a m a výstupními je už samotný vygenerovaný náhodný klíč klicZdroje : MIČKA, Pavel. Transpoziční šifra [online] [cit. 2011-04-16]. Dostupné z WWW: .MIČKA, Pavel. Vernamova šifra [online] [cit. 2011-04-16]. Dostupné z WWW: .MIČKA, Pavel. ASCII tabulka [online] [cit. 2011-04-16]. Dostupné z WWW: .
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


