JanKoWeb: Odborný SW - Matlab: Vigenerova šifra
"Nemusí pršet, stačí když kape..."
JanKoWeb - návody, postřehy a rady ze světa softwaru pro každého.
Recenze knih a humorná tvorba pro chvíle oddechu...
Světový den veterinárních lékařů.

Do východu slunce asi 7 hodin a 5 minut (dnes vyšlo 05:05, zapadlo 21:10).

"Vést rozhovor je umění."

nn
Galerie nemohla být načtena.
Jméno:
Číselně: sedm a osm je
Tak teď nevím... Už jsi psal do Guestbooku, milý návštěvníku?
Při každém obnovení stránky se zde vypíše zpráva skriptu.

Skript je zdrojový kód interpretovaného programu.

Pohání celý tento web a rád komunikuje s návštěvníky.-)
RSS RSS zdroj článků a novinek

Matlab: Vigenerova šifra

Implementace Vigenerovy šifry v Matlabu.



function vystup = vigener(zprava,klic,zasifrovat)
% Vigenerova sifra - kryptovaci funkce
% VSTUP:
%  zprava - retezec, odpovidajici zprave
%   mozne hodnoty: pouze pismena
%  klic - retezec, odpovidajici sifrovacimu klici
%   mozne hodnoty: pouze pismena
%  zasifrovat - volba, zda se ma sifrovat ci desifrovat
%   mozne hodnoty: true|false
%
% Autor: JanKoWeb, jankoweb(at)volny.cz, 2011
%

% Vigenerova sifrovaci tabulka
TAB = ...
    ['ABCDEFGHIJKLMNOPQRSTUVWXYZ';
     'BCDEFGHIJKLMNOPQRSTUVWXYZA';
     'CDEFGHIJKLMNOPQRSTUVWXYZAB';
     'DEFGHIJKLMNOPQRSTUVWXYZABC';
     'EFGHIJKLMNOPQRSTUVWXYZABCD';
     'FGHIJKLMNOPQRSTUVWXYZABCDE';
     'GHIJKLMNOPQRSTUVWXYZABCDEF';
     'HIJKLMNOPQRSTUVWXYZABCDEFG';
     'IJKLMNOPQRSTUVWXYZABCDEFGH';
     'JKLMNOPQRSTUVWXYZABCDEFGHI';
     'KLMNOPQRSTUVWXYZABCDEFGHIJ';
     'LMNOPQRSTUVWXYZABCDEFGHIJK';
     'MNOPQRSTUVWXYZABCDEFGHIJKL';
     'NOPQRSTUVWXYZABCDEFGHIJKLM';
     'OPQRSTUVWXYZABCDEFGHIJKLMN';
     'PQRSTUVWXYZABCDEFGHIJKLMNO';
     'QRSTUVWXYZABCDEFGHIJKLMNOP';
     'RSTUVWXYZABCDEFGHIJKLMNOPQ';
     'STUVWXYZABCDEFGHIJKLMNOPQR';
     'TUVWXYZABCDEFGHIJKLMNOPQRS';
     'UVWXYZABCDEFGHIJKLMNOPQRST';
     'VWXYZABCDEFGHIJKLMNOPQRSTU';
     'WXYZABCDEFGHIJKLMNOPQRSTUV';
     'XYZABCDEFGHIJKLMNOPQRSTUVW';
     'YZABCDEFGHIJKLMNOPQRSTUVWX';
     'ZABCDEFGHIJKLMNOPQRSTUVWXY'];

% uprava vstupu na velka pismena
zprava = upper(zprava);
klic = upper(klic);

% kontrola vstupu
if ( ~((zprava(1,:) >= 65) & (zprava(1,:) <= 90)) )
   %znak v ASCII
   error('Zprava muze obsahovat jen pismena.');
end
%&
if ( ~((klic(1,:) >= 65) & (klic(1,:) <= 90)) )
   %znak v ASCII
   error('Klic muze obsahovat jen pismena.');
end

% inicializace pole vystupu
vystup = [];

% pro i jdouci po 1 do delky zpravy
for i=1:length(zprava)
   % osetreni kratsiho klice nez je delka zpravy
   %  +1 ... Matlab indexuje pole od jedne
   pozice = mod(i-1,length(klic)) + 1;
   if (zasifrovat)
      % koukneme se do sifrovaci tabulky na pozici aktualniho
      % znaku v klici a ve zprave
      % -65 + 1 ... chceme dostat cislo pismene, ale Matlab indexuje pole od 1
      zasifrovane = TAB( klic(pozice)-65 + 1 , zprava(i)-65 + 1 );
      % pridani prvku do vystupniho pole
      vystup = [vystup zasifrovane];
   else
      % najdeme v tabulce sloupec, jehoz index odpovida puvodni zprave
      % -65 + 1 ... chceme dostat cislo pismene, ale Matlab indexuje pole od 1
      desifrovane = find(TAB(klic(pozice)-65 + 1,:) == zprava(i));
      % prevedeme na pismena; zde kvuli indexum Matlabu jednicku odecteme
      desifrovane = char(desifrovane + 65 - 1);
      % pridani prvku do vystupniho pole
      vystup = [vystup desifrovane];
   end
end % end of for

end
Rubrika Odborný SW | Tagy Matlab, Vigenerova, Implementace | Pá 15.04.2011 | 4071x

Související články:

MATLAB: úprava popisku osy x (vydáno Po 13.03.2017, 12:16)
MATLAB: dávková úprava figure (vydáno Po 13.03.2017, 12:12)
MATLAB: divné chování keeplimits u dateaxis (vydáno Po 20.02.2017, 11:52)
MATLAB: otevření složky z MATLABu (vydáno Ne 05.07.2015, 10:23)
MATLAB: error attempt to add "" to a static workspace (vydáno Pá 03.07.2015, 10:23)
MATLAB: spuštění m-file na Linuxu přímo v MATLABu (vydáno So 27.06.2015, 10:23)
MATLAB help generator - File Exchange - MATLAB Central (vydáno Čt 11.06.2015, 10:23)
Matlab: zjištění závislostí a toolboxů dané funkce (vydáno Ne 26.10.2014, 16:13)
Matlab java.lang.OutOfMemoryError  (vydáno So 14.06.2014, 11:31)
Matlab: na Linuxu nejde změnit velikost fontu (vydáno Pá 27.12.2013, 18:55)
Matlab: generátor nápovědy pro funkce (vydáno Čt 31.10.2013, 16:51)
Matlab: tipy a triky pro práci se strukturami (vydáno Út 13.08.2013, 13:53)
Matlab: práce s error, warning a try catch (vydáno Po 05.08.2013, 13:48)
Matlab: prohlížeč obrázků (vydáno Čt 01.08.2013, 22:23)
Matlab: skrytí warning (vydáno Čt 18.07.2013, 14:59)
MATLAB: vícenásobná substituce proměnné v matici (vydáno Út 12.03.2013, 12:46)
Matlab a LaTeX: rychlý export matice do LaTeXu (vydáno St 24.10.2012, 10:12)
Matlab: praktické tipy pro práci s figurami (grafy) (vydáno St 14.12.2011, 10:30)
Matlab: praktické rady pro ladění kódu aneb Debug mode (vydáno Ne 11.12.2011, 19:24)
Matlab: zkratky pro často se opakující příkazy přímo v toolbaru (vydáno Ne 20.11.2011, 18:32)
Matlab: převod výrazu do formátu LaTeXu (vydáno Út 17.05.2011, 23:12)
Matlab: Vigenerova šifra (vydáno Pá 15.04.2011, 10:44) - právě čtete
Matlab: instalace na Linuxu UBUNTU (vydáno Pá 25.02.2011, 18:03)
Matlab: úpravy výrazů (vydáno St 23.02.2011, 18:03)
Matlab: export grafu do pdf (vydáno So 05.02.2011, 23:58)
Matlab: TODO, FIXME a cell mode (vydáno Pá 10.12.2010, 17:36)
Matlab: defaultní nastavení grafu (vydáno Út 16.11.2010, 12:31)
Matlab: přehled exportů grafického výstupu (vydáno Pá 09.07.2010, 16:37)
Matlab - funkce pro textový výstup (vydáno So 13.03.2010, 19:39)
Matlab - práce s řetězci (vydáno Čt 22.10.2009, 17:03)

Náhodné články

© 2008-2025 JK, kontakt, právní upozornění
Powered by Janko's RS| XHTML, CSS, RSS, analýza kódu, SEO servis, dostupnost, hosting, líbí se Vám tu?
Požadavek: 0.69097 s, generování: 0.03642 s, paměť: 1.25 MB, sql dotazů: 9, CPU: 20.44

.