Implementando Algoritmo RSA usando Python
Este artigo explica o que realmente é o algoritmo RSA na criptografia e mostra como implementar o algoritmo RSA para criptografar e descriptografar dados usando Python. Aqui, dados se referem a números. Você também pode usar dados de string para criptografar e descriptografar usando esse algoritmo.
O algoritmo RSA é um método amplamente utilizado para criptografar e descriptografar mensagens. Recebeu o nome de seus criadores, Ron Rivest , Adi Shamir e Leonard Adleman , que o desenvolveram em 1977 . O algoritmo RSA é baseado na dificuldade de fatorar grandes números e é amplamente considerado um método seguro para criptografar dados.
Para entender como o algoritmo RSA funciona, precisamos primeiro entender o conceito de chaves públicas e privadas. No algoritmo RSA, cada usuário possui um par de chaves: uma chave pública e uma chave privada. A chave pública é disponibilizada para qualquer pessoa que queira enviar uma mensagem ao usuário e é usada para criptografar a mensagem. A chave privada é mantida em segredo e é usada para descriptografar a mensagem.
Aqui está um exemplo de como o algoritmo RSA funciona:
- Digamos que Gwen queira enviar uma mensagem para Peter. Ela procura a chave pública de Peter e a usa para criptografar a mensagem.
- A mensagem criptografada é enviada para Peter.
- Peter usa sua chave privada para descriptografar a mensagem e lê-la.
Veja como funciona com mais detalhes:
- Primeiro, Gwen e Peter concordam em dois grandes números primos, p e q.
- Eles usam esses números primos para calcular um terceiro número, n, que é o produto de p e q. Este número é tornado público.
- Eles também calculam um quarto número, conhecido como “totient”, que é o número de inteiros positivos menores que n que são primos de n. Este número também é divulgado.
- Gwen e Peter geram uma chave secreta, conhecida como “chave privada”. Essa chave é um número que é menor que o totiente e coprimo ao totiente.
- Eles então usam sua chave privada para calcular sua chave pública, que é um número relativamente primo em relação ao totiente. Essa chave pública é disponibilizada para qualquer pessoa que queira enviar uma mensagem ao usuário.
O algoritmo RSA tem várias vantagens. É relativamente simples de implementar e é amplamente utilizado porque é considerado um método seguro de criptografia de dados. Além disso, o algoritmo RSA é um algoritmo de “chave pública”, o que significa que as chaves usadas para criptografia e descriptografia são diferentes. Isso possibilita que os usuários se comuniquem sem precisar trocar chaves secretas.
Em resumo, o algoritmo RSA é um método amplamente utilizado para criptografar e descriptografar mensagens. Baseia-se na dificuldade de fatorar grandes números e é considerado um método seguro para criptografar dados. Tem várias vantagens, incluindo sua simplicidade e o uso de chaves públicas e privadas.
Todo o algoritmo RSA em palavras simples,
- Selecione p , q ( p e q ambos primos e p diferente de q )
- Calcule n = p * q
- Calcular o tociente, t = (p -1) * (q — 1)
- Selecione e usando gcd(t, e) = 1 onde 1 < e < t
- Calcule d usando (d * e % t = 1)
- Considere e como chave pública e d como chave privada.
- Para criptografia, Cipher Text = (Message ^ e) % n (onde, Message < n)
- Para descriptografia, Message = (Cipher Text ^ d) % n
from math import gcd
# defining a function to perform RSA approch
def RSA(p: int, q: int, message: int):
# calculating n
n = p * q
# calculating totient, t
t = (p - 1) * (q - 1)
# selecting public key, e
for i in range(2, t):
if gcd(i, t) == 1:
e = i
break
# selecting private key, d
j = 0
while True:
if (j * e) % t == 1:
d = j
break
j += 1
# performing encryption
ct = (message ** e) % n
print(f"Encrypted message is {ct}")
# performing decryption
mes = (ct ** d) % n
print(f"Decrypted message is {mes}")
# Testcase - 1
RSA(p=53, q=59, message=89)
# Testcase - 2
RSA(p=3, q=7, message=12)
Encrypted message is 1394
Decrypted message is 89
Encrypted message is 3
Decrypted message is 12
Se você achar útil, compartilhe com seus amigos e não se esqueça de seguir.
Vejo vocês em outro blog até lá tchau





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)