Buscar

Trabalho de Segurança e Criptografia - av1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Trabalho de Segurança e 
 Criptografia 
 RSA 
 Um dos melhores exemplos para exemplificar a utilização de números primos na 
 computação, é falando sobre um dos modelos de criptografia mais seguros do mundo, o RSA, 
 onde se baseia na escolha de número primos, e quanto maior o número, mais seguro a chave 
 é. 
 Podemos usar esse site como exemplo para escolher um número primo grande: 
 http://compoasso.free.fr/primelistweb/page/prime/liste_online_en.php 
 Escolhido os números, o processo é feito da seguinte forma, temos dois primos, tais como: 
 p1 = 3, p2 - 11 (apenas a fim de estudo, o melhor a ser feito é escolher o maior primo 
 possível) 
 Calculamos o produto entre eles, no caso temos, 11 x 3 = 33 
 Quebra de Página 
 Após esse resultado, precisamos calcular o totiene de euler desse número, que no caso é a 
 quantidade de números ‘coprimos’, em que o MDC entre ele e o outro número é 1, e a 
 quantidade de números coprimos é o totiene desse número. A fórmula para se calcular o 
 titiene de um número é essa: 
 Utilizando nosso exemplo, temos então: 
 Agora precisamos escolher um dos 20 coprimos do nosso 33, os coprimos de 33 são 
 1,2,4,5,7,8,10,13,14,16,17,19,20,23,25,26,28,29,31,32, para esse exemplo, escolhemos o 17, 
 vamos chamar o de X. 
 Agora precisamos de um Y, ele para ele existir, é preciso que a seguinte fórmula seja 
 verdadeira: 
 X x Y mod totiene (n) = 1 (mod, no mundo da computação, é o resto da divisão de um 
 número por outro, geralmente sendo o operador %) 
 Para essa fórmula ser real, temos que Y = 13 
 Então nossos dados agora ficam organizados assim: 
 Agora, para encriptar uma mensagem, tal como uma mensagem M qualquer, a seguinte 
 fórmula é usada: 
 Vamos usar de exemplo então o número 14 
 temos que: 
 logo o nosso 14 cifrado virou 20 e agora, se quisermos decriptografar? O processo é o 
 seguinte: 
 Assim temos o nosso texto decriptografado de volta. 
 Script 
 #!/usr/bin/python 
 class bcolors: 
 HEADER = '\033[95m' 
 OKBLUE = '\033[94m' 
 OKCYAN = '\033[96m' 
 OKGREEN = '\033[92m' 
 WARNING = '\033[93m' 
 FAIL = '\033[91m' 
 ENDC = '\033[0m' 
 BOLD = '\033[1m' 
 UNDERLINE = '\033[4m' 
 def encrypt(msg, encryptor, n): 
 print(f"[+] {bcolors.OKGREEN}ENCRYPTING{bcolors.ENDC}") 
 aux = msg ** encryptor 
 crypt = aux % n 
 return crypt 
 def decrypt(encrypted, decryptor, n): 
 print(f"[+] {bcolors.OKGREEN}DECRYPTING{bcolors.ENDC}") 
 aux = encrypted ** decryptor 
 plain = aux % n 
 return plain 
 if _name_ == "_main_": 
 p1 = 11 
 p2 = 3 
 encryptor = 17 
 decryptor = 13 
 n = p1*p2 
 print(f"valores{bcolors.WARNING}\nchave pública:{bcolors.ENDC}\tencryptor: {encryptor}, 
 n={n}\n{bcolors.WARNING}chave privada:{bcolors.ENDC}\tdecryptor: {decryptor}, n={n}") 
 print(f"================================================================= 
 ===============") 
 message = int(input("Digite a mensagem: ")) 
 encypted = int(encrypt(message, encryptor, n)) 
 print(f"a sua mensagem criptografada é: {bcolors.OKBLUE}{encypted}{bcolors.ENDC}") 
 print(f"================================================================= 
 ===============") 
 plain = int(decrypt(encypted, decryptor, n)) 
 print(f"a mensagem orginal é: {bcolors.OKBLUE}{plain}{bcolors.ENDC}") 
 Imagem (exemplo) 
 Alunos: 
 Arthur Juan Lima Pinto (20201104544) 
 Juliana Bond Oliveira Lins (20201101127) 
 Pedro Henrique Ottone Chaves (20201106340) 
 Yago de Paula Freire Graça (20212102645)

Outros materiais