Implementando el Algoritmo RSA usando Python

Dec 09 2022
Este artículo explica qué es realmente el algoritmo RSA en criptografía y muestra cómo implementar el algoritmo RSA para el cifrado y descifrado de datos utilizando Python. Aquí, los datos se refieren a números.

Este artículo explica qué es realmente el algoritmo RSA en criptografía y muestra cómo implementar el algoritmo RSA para el cifrado y descifrado de datos utilizando Python. Aquí, los datos se refieren a números. También puede usar datos de cadena para cifrar y descifrar utilizando este algoritmo.

El algoritmo RSA es un método ampliamente utilizado para cifrar y descifrar mensajes. Lleva el nombre de sus creadores, Ron Rivest , Adi Shamir y Leonard Adleman , quienes lo desarrollaron en 1977 . El algoritmo RSA se basa en la dificultad de factorizar números grandes y se considera ampliamente como un método seguro para cifrar datos.

Para comprender cómo funciona el algoritmo RSA, primero debemos comprender el concepto de claves públicas y privadas. En el algoritmo RSA, cada usuario tiene un par de claves: una clave pública y una clave privada. La clave pública se pone a disposición de cualquiera que quiera enviar un mensaje al usuario y se utiliza para cifrar el mensaje. La clave privada se mantiene en secreto y se utiliza para descifrar el mensaje.

Aquí hay un ejemplo de cómo funciona el algoritmo RSA:

  • Digamos que Gwen quiere enviar un mensaje a Peter. Busca la clave pública de Peter y la usa para cifrar el mensaje.
  • El mensaje cifrado se envía a Peter.
  • Peter usa su clave privada para descifrar el mensaje y leerlo.

Así es como funciona con más detalle:

  • Primero, Gwen y Peter están de acuerdo en dos grandes números primos, p y q.
  • Usan estos números primos para calcular un tercer número, n, que es el producto de p y q. Este número se hace público.
  • También calculan un cuarto número, conocido como "tociente", que es el número de números enteros positivos menores que n que son coprimos con n. Este número también se hace público.
  • Gwen y Peter generan cada uno una clave secreta, conocida como "clave privada". Esta clave es un número que es menor que el tociente y es coprimo con el tociente.
  • Luego usan su clave privada para calcular su clave pública, que es un número que es relativamente primo para el paciente. Esta clave pública se pone a disposición de cualquiera que quiera enviar un mensaje al usuario.

El algoritmo RSA tiene varias ventajas. Es relativamente simple de implementar y se usa ampliamente porque se considera un método seguro para cifrar datos. Además, el algoritmo RSA es un algoritmo de "clave pública", lo que significa que las claves utilizadas para el cifrado y descifrado son diferentes. Esto hace posible que los usuarios se comuniquen sin tener que intercambiar claves secretas.

En resumen, el algoritmo RSA es un método ampliamente utilizado para cifrar y descifrar mensajes. Se basa en la dificultad de factorizar números grandes y se considera un método seguro para cifrar datos. Tiene varias ventajas, incluida su simplicidad y el uso de claves públicas y privadas.

Todo el algoritmo RSA en palabras simples,

  1. Seleccione p , q ( p y q ambos primos y p no iguales a q )
  2. Calcular n = p * q
  3. Calcular totient, t = (p -1) * (q — 1)
  4. Seleccione e usando mcd(t, e) = 1 donde 1 < e < t
  5. Calcular d usando (d * e % t = 1)
  6. Considere e como clave pública y d como clave privada.
  7. Para el cifrado, Cipher Text = (Mensaje ^ e) % n (donde, Mensaje < n)
  8. Para el descifrado, Mensaje = (Texto cifrado ^ 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

Si lo encuentra útil, compártalo con sus amigos y no se olvide de seguir.

Nos vemos en otro blog hasta entonces chao