Este documento descreve o algoritmo RSA para criptografia de imagens. Ele converte uma imagem em RGB em números, gera chaves pública e privada usando números primos, criptografa os planos de cor usando a chave privada, e descriptografa usando a chave pública. A imagem criptografada e descriptografada são mostradas no final.
Codigo rsa manejo de llaves publicas y privadas (yango colmenares)
1. Instituto Politécnico Nacional
Introducción a los Sistemas de Comunicación Seguros
Unidad MISTI Culhuacan
Presentado a: Dr. Gualberto Aguilar Torres
Tarea
Código RSA
5
Por: Yango Alexander Colmenares
Fecha
Septiembre de 2013
% INSTITUTO POLITECNICO NACIONAL-MISTI CULHUACAN --- MEXICO DF 2013
% Estudiante: YANGO ALEXANDER COLMENARES
% Código RSA (Llaves publicas y privadas)
clc
clear
p = input('Por favor Ingrese su número primo n');
q = input('Por favor Ingrese su segundo número primo n');
n = p*q;
z = (p-1)*(q-1);
intervalo = [max(p,q)+1,n-1];
d=0;
%%%%%%Conversión de la imagen en los 3 planos%%%%%%%%%%%%%%
imagen_rgb = imread('imagen.bmp');
plano_r = imagen_rgb(:,:,1);
plano_g = imagen_rgb(:,:,2);
plano_b = imagen_rgb(:,:,3);
plano_r = double(plano_r);
plano_g = double(plano_g);
plano_b = double(plano_b);
%%%%%%Generación de llaves%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
contador = intervalo(1);
while(contador < intervalo(2))
if(gcd(contador,z) == 1)
d = contador;
break;
end
contador = contador+1;
end
e=0;
contador_dos = 1;
while(true)
if(mod(contador_dos*d,z) == 1 && contador_dos < z)
2. e = contador_dos ;
break;
end
contador_dos = contador_dos+1;
end
tam_llave = size(plano_r);
alto = tam_llave(1);
ancho = tam_llave(2);
%%%%%%Tamaños de alto%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:alto
for j=1:ancho
plano_cifrado_r(i,j) = eleva(plano_r(i,j),d,n);
plano_cifrado_g(i,j) = eleva(plano_g(i,j),d,n);
plano_cifrado_b(i,j) = eleva(plano_b(i,j),d,n);
end
end
imagen_cifrada(:,:,1) = double(mod(plano_cifrado_r,256));
imagen_cifrada(:,:,2) = double(mod(plano_cifrado_g,256));
imagen_cifrada(:,:,3) = double(mod(plano_cifrado_b,256));
imagen_cifrada = uint8(imagen_cifrada);
imwrite(imagen_cifrada,'imagen_cifrada.bmp','bmp');
for i=1:alto
%%%%%%Tamaños de ancho matriz codigo
imagen%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:ancho
plano_descifrado_r(i,j) = eleva(plano_cifrado_r(i,j),e,n);
plano_descifrado_g(i,j) = eleva(plano_cifrado_g(i,j),e,n);
plano_descifrado_b(i,j) = eleva(plano_cifrado_b(i,j),e,n);
end
end
imagen_descifrada(:,:,1) = plano_descifrado_r;
imagen_descifrada(:,:,2) = plano_descifrado_g;
imagen_descifrada(:,:,3) = plano_descifrado_b;
imagen_descifrada = uint8(imagen_descifrada);
a = imshow(imagen_cifrada);
b = imshow(imagen_descifrada);
%%%%%%Impresión de imagenes%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
subplot(1,2,1), imshow(imagen_cifrada)
subplot(1,2,2), imshow(imagen_descifrada)