You are on page 1of 2

M. Joldoş SSA.

Îndrumător pentru laborator Criptografie

Un algoritm criptografic

1. Descrierea algoritmului

Următorul algoritm se va aplica setului de caractere care se pot tipări din codul ASCII-7. Algoritmul
operează asupra valorilor numerice ale acestor caractere şi se bazează pe o serie de construcŃii
algebrice. Algoritmul va cripta blocuri de text de lungime t − 1 (t− 1 caractere). Caracterele având valori
numerice între 0 şi 31 nu pot fi tipărite şi vor fi omise. Din acest motiv, valoarea numerică efectivă, a, a
unui caracter va fi înlocuită cu a−32, iar algoritmul va opera pe inelul ℤ/96ℤ.
Fie ai valoarea numerică a celui de al i-lea caracter din blocul de text. Fie secvenŃa [n1,..., nt] cu ni ∈
{1,...,t}, iar ni≠ nj pentru i≠ j reprezintă o permutare care mapează secvenŃa de elemente la o secvenŃă
compusă din aceleaşi elemente, în care elementul al i-lea din secvenŃa originală ocupă a ni-a poziŃie
(exemplu: fie f = [3; 4; 2; 1], atunci f(abcd) = dcab).
Fie (ℤ/96ℤ)* grupul multiplicativ al ℤ/96ℤ. Elementele lui (ℤ/96ℤ)* sunt reprezentate de numere care
nu au alt divizor comun cu 96 decât 1. Acest lucru va fi explicat mai în detaliu într-un document care
lămureşte bazele matematice.
Fie q1,..., qt ∈ (ℤ/96ℤ)* şi r1,..., rt ∈ (ℤ/96ℤ)* elemente ale grupului multiplicativ. Fie S un caracter
tipăribil din codul ASCII-7.
Ipoteză: Dorim să cifrăm un bloc de text de t − 1 caractere.
Cheia se obŃine din următoarele elemente (definite mai sus):
q1,..., qt;; r1,..., rt; S; [n1,..., nt]
Fie a1,..., at-1 valorile numerice ale caracterelor din blocul de text dat (după scăderea valorii 32), iar at
valoarea numerică a caracterului S din cheie (după scăderea valorii 32). Apoi efectuăm următoarele
t
calcule: c ≡ ∑ a i q i mod 96
i =1
Ceea ce înseamnă că c este egal cu suma dată modulo 96. Apoi calculăm
aˆ i ≡ a i + c ⋅ ri mod 96
pentru i = 1,..., t (din nou 96). Acum, pentru fiecare â i adunăm 32 şi îl transformăm într-un caracter.
Apoi aplicăm secvenŃei de caractere obŃinute permutarea dată în cheie. Blocul de text rezultat, de
lungime t este blocul de text cifrat.
Pentru descifrarea textului codat, aplicăm inversa permutării date de cheie asupra textului cifrat. Apoi
luăm ultimul caracter. Acest caracter reprezintă caracterul cifrat S din cheie. Scăderea valorii numerice
a lui S din valoarea numerică a acestui caracter modulo 96 conduce la rezultatul c ⋅ ri mod 96 . Cum rt
—1
este un element al grupului multiplicativ, există o inversă multiplicativă rt a lui rt modulo 96 care se
poate obŃine ca rezultat al algoritmului euclidian extins. Prin înmulŃirea lui c ⋅ rt prin rt (modulo 96)
—1

obŃinem c. Acum caracterele din poziŃiile de la 1 la t−1 sunt transformate în valorile lor numerice prin
scăderea lui 32. Astfel obŃinem â i pentru i = 1,..., t−1. Acum avem doar nevoie să calculăm:
a i ≡ aˆ i + c ⋅ ri mod 96
Adunând 32 la fiecare ai şi transformându-l în caracter pentru i = 1,..., t−1 vom obŃine blocul de text
original, de lungime t−1.

2. Ce trebuie realizat

ImplementaŃi algoritmul într-un applet în limbajul Java. Appletul va conŃine două controale text multi-
linie: unul pentru textul clar şi altul pentru textul cifrat. La trecerea de pe un control pe altul se va
realiza operaŃia corespunzătoare: cifrare la trecerea de pe textul clar pe cel cifrat, respectiv descifrare
la trecerea de pe textul cifrat pe textul clar.
M. Joldoş SSA. Îndrumător pentru laborator Criptografie

Notă. Algoritmul euclidian extins.

Pentru toŃi a, b ∈ ℤ, algoritmul euclidean extins calculează numerele u, v ∈ ℤ with ua + vb =


cmmdc (a, b) = g. Astfel produce mai mult decât cmmdc. Dacă cmmdc(a, b ) = 1, atunci urmează uşor
că ua ≡ 1 mod b şi vb ≡ 1 mod a. Aceasta înseamnă că, pentru cmmdc(a, b ) = 1 avem u ca inversă
multiplicativă a lui a modulo b şi v ca inversă multiplicativă a lui b modulo a. Sub ipoteza |b| ≤ |a|
algoritmul euclidian extins are următoarea formă:

You might also like