Professional Documents
Culture Documents
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