Está en la página 1de 31

Operaciones en Zn

Ing. Informático Mitchell Blancas

Facultad de CC.FF. - Escuela de Informática 1


Enteros modulo n: Zn
• Este conjunto especial de números enteros,
se define como el conjunto de enteros dado
por {0, 1, . . . , n - 1}. Como en todo conjunto,
en los Zn también se pueden efectuar
operaciones tales como adición, sustracción y
multiplicación modulo n.

Facultad de CC.FF. - Escuela de Informática 2


Enteros modulo n: Zn
• La importancia de estas operaciones en este
curso se aprecia en los algoritmos de los
principales criptosistemas criptográficos.

Facultad de CC.FF. - Escuela de Informática 3


Adición
• Sean a, b E Zn , la adición modular se define
por:
a+b a+b<n
(a + b)mod n = a + b - n a + b ≥ n

Facultad de CC.FF. - Escuela de Informática 4


Adición
Ejemplo
• Sea el conjunto Z15 = {0, 1, . . . , 14}. La adición
de los números 6 E Z15 y 9 E Z15 esta dado por 0
E Z15 , pues por definición de los Zn se tiene
que 6 + 9 ≡ 0(mod 15).
Ejemplo
• Sea el conjunto Z25 = {0, 1, . . . , 24}. La adición de
los números 13 E Z25 y 16 E Z25 esta dado por 4
E Z25 , pues por definición se tiene que 13 + 16
≡4(mod 25).
Facultad de CC.FF. - Escuela de Informática 5
Adición
Ejercicios: En Z100, hallar:
a) 50+45
b) 70+30
c) 50+65
d) 99+99

Facultad de CC.FF. - Escuela de Informática 6


Multiplicación
• Siendo a, b E Zn , la multiplicación modular se
efectúa simplemente multiplicándolos como
si fueran números enteros comunes, para
luego coger el resto de la división de tal
producto por n.
Ejemplo
• Sea el conjunto Z25 = {0, 1, . . . , 24}. La
multiplicación de 13 por 16 es 8, pues
13*16 ≡ 8(mod 25).

Facultad de CC.FF. - Escuela de Informática 7


Multiplicación
Ejercicios: En Z15, hallar:
a) 3*4
b) 5*3
c) 7*9
d) 14*14

Facultad de CC.FF. - Escuela de Informática 8


Inverso Multiplicativo
• Dados los números enteros a y n > O, el
inverso multiplicativo de «a modulo n» esta
dado por el numero entero «y» E Zn , tal que
a*y ≡ 1(mod n). Es importante tener en
cuenta que si «y» existe, entonces es único,
y «a» es llamado invertible. Por notación, el
inverso de «a» se denota por «a−1».

Facultad de CC.FF. - Escuela de Informática 9


Inverso Multiplicativo
Ejemplo
• En Z9 = {0, 1, . . . , 8} los elementos invertibles son 1, 2,
4, 5, 7, 8, pues por ejemplo el inverso de 4 es 7 ya que
4 × 7 ≡ 1(mod 9). Análogamente, el inverso de 7 es 4,
pues 7 × 4 ≡ 1(mod 9).
Propiedad:
• Sea «a» E Zn , entonces «a» es invertible si y
solamente si el mcd(a, n)= 1.
Ejemplo
• Sea Z9 = {0, 1, . . . , 8}, entonces 2 es invertible, pues el
mcd(2, 9) = 1.

Facultad de CC.FF. - Escuela de Informática 10


Inverso Multiplicativo
Algoritmo para el inverso multiplicativo
Entrada: a E Zn
Salida : Existencia del inverso

Hallar «x» e «y» tal que nx + ay = d; es decir usar: euclides_extendido(Zn,a)

SI (d > 1)
retornar (Inverso no existe)
CASO CONTRARIO
SI (y<0)
retornar (y+n)
CASO CONTRARIO
retornar (y)
FIN_SI
FIN_SI
Facultad de CC.FF. - Escuela de Informática 11
Inverso Multiplicativo

Ejercicios: En Z112, verificar si


es invertible y hallar:
a) 8-1
b) 1-1
c) 2-1
d) 111-1

Facultad de CC.FF. - Escuela de Informática 12


Inverso Multiplicativo

Ejercicios (parte 2):verificar si


es invertible y hallar:
a) 3-1en Z10
b) 6-1en Z11
c) 20-1 en Z101
d) 17-1 en Z112

Facultad de CC.FF. - Escuela de Informática 13


Inverso Multiplicativo

Solución (parte 2):


a) 3-1en Z10 = 7
b) 6-1en Z11 = 2
c) 20-1 en Z101 = 96
d) 17-1 en Z112 = 33

Facultad de CC.FF. - Escuela de Informática 14


División
• Sean a, b E Zn . La división de «a por b modulo n»
esta dado por el producto de «a con b−1 modulo
n».
• Podemos notar que la división modular es
posible, solamente si b es invertible modulo n.
Ejemplo
• Sea Z9 = {0, 1, . . . , 8} el conjunto de los números
enteros modulo 9, entonces considerando 3 E Z9
y 4 E Z9 tenemos que 3÷4(mod 9) = 3, pues como
4−1 = 7 entonces tenemos que 3 × 7(mod 9) = 3.
Facultad de CC.FF. - Escuela de Informática 15
División
Ejercicios: En Z15, hallar:
a) 3÷4
b) 5÷3
c) 7÷11
d) 14÷14

Facultad de CC.FF. - Escuela de Informática 16


División
Ejercicios: En Z15, hallar:
a) 3÷4  3*4-1
b) 5÷3
c) 7÷11
d) 14÷14

Facultad de CC.FF. - Escuela de Informática 17


Exponenciación
• La exponenciación en Zn es otra operación
básica muy útil para la criptografía.

Facultad de CC.FF. - Escuela de Informática 18


Exponenciación
Algoritmo:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n
Salida : ak mod n

int exp=1;
int xp= a%n;

Mientras (k>0) Hacer


si(k%2!=0)
exp= (exp*xp)%n;
fin si
xp=(xp*xp)%n;
k= k/2;
Fin Mientras

Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 19


Exponenciación
Ejemplo:
• Sea Z123 = {0, 1, . . . , 122}, donde a = 5 E Z123 y k = 59.
Entonces:
• El algoritmo retorna:
559mod(123) = 74

Facultad de CC.FF. - Escuela de Informática 20


Exponenciación
Algoritmo Solución:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n • Sean a = 5 E Z123 y k = 59.
Salida : ak mod n • Sean «i» (contador de iteraciones),
«xp» y «exp» 3 variables enteras.
int exp=1;
int xp= a%n;

Mientras (k>0) Hacer

si(k%2!=0)
exp= (exp*xp)%n;
fin si
xp=(xp*xp)%n;
k= k/2;
Fin Mientras

Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 21


Exponenciación
Algoritmo Solución:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n • Sean a = 5 E Z123 y k = 59.
Salida : ak mod n • Sean «i» (contador de iteraciones),
«xp» y «exp» 3 variables enteras.
int exp=1;
int xp= a%n;
i k exp xp
Mientras (k>0) Hacer

si(k%2!=0)
exp= (exp*xp)%n;
fin si
xp=(xp*xp)%n;
k= k/2;
Fin Mientras

Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 22


Exponenciación
Algoritmo Solución:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n • Sean a = 5 E Z123 y k = 59.
Salida : ak mod n • Sean «i» (contador de iteraciones),
«xp» y «exp» 3 variables enteras.
int exp=1;
int xp= a%n;
Inicializar i k exp xp
datos
Mientras (k>0) Hacer 0 59 1 5

si(k%2!=0)
exp= (exp*xp)%n;
fin si
xp=(xp*xp)%n;
k= k/2;
Fin Mientras

Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 23


Exponenciación
Algoritmo Solución:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n • Sean a = 5 E Z123 y k = 59.
Salida : ak mod n • Sean «i» (contador de iteraciones),
«xp» y «exp» 3 variables enteras.
int exp=1;
int xp= a%n;
i k exp xp
Mientras (k>0) Hacer 0 59 1 5
1 29 5 25
si(k%2!=0)
exp= (exp*xp)%n;
fin si
xp=(xp*xp)%n;
k= k/2;
Fin Mientras

Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 24


Exponenciación
Algoritmo Solución:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n • Sean a = 5 E Z123 y k = 59.
Salida : ak mod n • Sean «i» (contador de iteraciones),
«xp» y «exp» 3 variables enteras.
int exp=1;
int xp= a%n;
i k exp xp
Mientras (k>0) Hacer 0 59 1 5
1 29 5 25
si(k%2!=0)
2 14 2 10
exp= (exp*xp)%n;
fin si
xp=(xp*xp)%n;
k= k/2;
Fin Mientras

Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 25


Exponenciación
Algoritmo Solución:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n • Sean a = 5 E Z123 y k = 59.
Salida : ak mod n • Sean «i» (contador de iteraciones),
«xp» y «exp» 3 variables enteras.
int exp=1;
int xp= a%n;
i k exp xp
Mientras (k>0) Hacer 0 59 1 5
1 29 5 25
si(k%2!=0)
2 14 2 10
exp= (exp*xp)%n;
fin si 3 7 2 100
xp=(xp*xp)%n;
k= k/2;
Fin Mientras

Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 26


Exponenciación
Algoritmo Solución:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n • Sean a = 5 E Z123 y k = 59.
Salida : ak mod n • Sean «i» (contador de iteraciones),
«xp» y «exp» 3 variables enteras.
int exp=1;
int xp= a%n;
i k exp xp
Mientras (k>0) Hacer 0 59 1 5
1 29 5 25
si(k%2!=0)
2 14 2 10
exp= (exp*xp)%n;
fin si 3 7 2 100
xp=(xp*xp)%n; 4 3 77 37
k= k/2;
Fin Mientras

Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 27


Exponenciación
Algoritmo Solución:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n • Sean a = 5 E Z123 y k = 59.
Salida : ak mod n • Sean «i» (contador de iteraciones),
«xp» y «exp» 3 variables enteras.
int exp=1;
int xp= a%n;
i k exp xp
Mientras (k>0) Hacer 0 59 1 5
1 29 5 25
si(k%2!=0)
2 14 2 10
exp= (exp*xp)%n;
fin si 3 7 2 100
xp=(xp*xp)%n; 4 3 77 37
k= k/2;
5 1 20 16
Fin Mientras

Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 28


Exponenciación
Algoritmo Solución:
Entrada: a E Zn , k E Z tal que 0 ≤ k < n • Sean a = 5 E Z123 y k = 59.
Salida : ak mod n • Sean «i» (contador de iteraciones),
«xp» y «exp» 3 variables enteras.
int exp=1;
int xp= a%n;
i k exp xp
Mientras (k>0) Hacer 0 59 1 5
1 29 5 25
si(k%2!=0)
2 14 2 10
exp= (exp*xp)%n;
fin si 3 7 2 100
xp=(xp*xp)%n; 4 3 77 37
k= k/2;
5 1 20 16
Fin Mientras
6 0 74 10
Retornar (exp)

Facultad de CC.FF. - Escuela de Informática 29


Exponenciación
Algoritmo
Ejercicios: hallar: Entrada: a E Zn , k E Z tal que 0 ≤ k < n
Salida : ak mod n
a) 1111 en Z31
int exp=1;
b) 3163 en Z101 int xp= a%n;
c) 12372 en Z200 Mientras (k>0) Hacer
d) 5569 en Z1234 si(k%2!=0)
exp= (exp*xp)%n;
fin si
xp=(xp*xp)%n;
k= k/2;
Fin Mientras

Retornar (exp)
Facultad de CC.FF. - Escuela de Informática 30
Exponenciación
Solución:
a) 1111 en Z31 = 24
b) 3163 en Z101 = 58
c) 12372 en Z200 = 121
d) 5569 en Z1234 = 991

Facultad de CC.FF. - Escuela de Informática 31