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
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