RC5 šifra





RC5 kalkulačka:



Legenda:


Algoritmus:

        Zde jsou úryvky kódu, který by měl naznačit princip šifry a její jednoduchost. Kód je zapsán v symbolickém zápisu. Pro RC5 jsou určující tyto parametry:
        Označení typu šifry se potom uvádí ve formátu  RC5-w/ rounds /b. Typická šifra je například RC5-32/12/16.

        Vysvětlení použitých proměnných a jejich typů:
        Proměnné A a B představují vstup algoritmu. Obě jsou o veliskosti jednoho slova (w bitů). Pole bytů key obsahuje klíč, podle kterého se bude vstup šifrovat. Hlavní smyčka šifrování se provede právě tolikrát, kolik je v proměnné rounds. Dále jsou použita pole L o velikosti t = 2 * (rounds + 1) a pole S o velikosti c = b / u, kde b je velikost klíče key a u = w / 8. Obě pole jsou typu pole slov, kde slovo má w bitů.

        Vysvětlení některých použitých operací:
        A <<< B        levá neznaménková rotace argumentu A o B bitů
        A + B             součet A + B, který se chápe jako modulo 2w, tzn. počítá se s přetečením proměnné s výsledkem, která je stejného typu jako operandy
        A ^ B             A XOR B  (jako v jazyce C)
        A % B            A modulo B (jako v jazyce C)


Konverze klíče z bytů do wordů:

    for i = (b - 1) downto 0
        L [i / u] = (L [i / u] <<< 8) + key [i];

Inicializace pole S:

    S [0] = Pw;
    for i = 1 to (t - 1)
        S [i] = S [i - 1] + Qw;

Zamíchání klíče do pole S:

    i = j = 0;
    A = B = 0;
    do 3 * max (t, c) times:
        A = S [i] = (S [i] + A + B) <<< 3;
        B = L [j] = (L [j] + A + B) <<< (A + B);
        i = (i + 1) % t;
        j = (j + 1) % c;

Hlavní šifrovací smyčka:

    A += S [0];
    B += S [1];

    for i = 1 to rounds do
        A = ( (A ^ B) <<< B) + S [2 * i];
        B = ( (B ^ A) <<< A) + S [2 * i + 1];




Odkazy:

        Detailní infomace o RC5 jsou v postscriptové verzi na ftp://ftp.rsasecurity.com/pub/rsalabs/rc5/