Algoritmos sobre curvas elípticas

Implementación del sistema criptográfico de el Gamal.

Ejemplo de uso:

e, power, irreducible = curve_k409
private_key = 0xf42354
print(e.base)
publickey = e.scalar_mul(private_key, e.base)

m0 = F2m(qx, power, irreducible)
m1 = F2m(qy, power, irreducible)
m = AffinePoint(m0, m1)
cipher = ElGamal(e)
ciphered = cipher.encrypt_point(m, publickey)
deciphered = cipher.decrypt_point(private_key, ciphered[0], ciphered[1])

assert deciphered == m

ElGamal

Implementación del criptosistema del Gamal

class ElGamal(curve: ycurve.ecc.ecc.Curve)[fuente]

Implementación del criptosistema del Gamal

Variables

curve – Curva sobre la que se va a trabajar

encrypt_point(msg: ycurve.ecc.point.Point, publickey: ycurve.ecc.point.Point, seed: Optional[int] = None)Tuple[ycurve.ecc.point.Point, ycurve.ecc.point.Point][fuente]

Dado un punto de la curva que representa un mensaje, cifra el contenido de acuerdo al algoritmo de el gamal.

Variables
  • msg – Mensaje que se quiere cifrar

  • publickey – Llave pública usada en el criptosistema

  • seed – Semilla para la elección en procesos aleatorios

decrypt_point(private_key: int, c1: ycurve.ecc.point.Point, c2: ycurve.ecc.point.Point)ycurve.ecc.point.Point[fuente]

Descifra un mensaje cifrado mediante el método del gamal

Variables
  • private_key – Llave privada del sistma

  • c1 – primera componente resultado de cifrar el mensaje

  • c2 – segunda componente resultado de cifrar el mensaje