Skip to content

A Python implementation of Elgamal algorithm: encryption, decryption and signature generation and verification

Notifications You must be signed in to change notification settings

ricardojoserf/elgamal-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Elgamal

Implementation of Elgamal algorithm in Python, based on these series of videos (the parameter nomenclature is based on them).

Public and private keys are composed of 3 elements each:

  • Kpub = (p, alfa, B)

  • Kpriv = (p, alfa, b)

These parameters are:

  • p (parameter -m): A random integer

  • alfa (parameter -a): A generator of Zp

  • b (parameter -b): A secret integer between 2 and (p-2)

  • B (parameter -B): A public modular exponentiation calculated as B = (alfa^(b))mod(p)

Encryption

For the encryption process, it is necessary to add --encrypt, the parameters of the public key (-p, -a and -B) and the plaintext message (parameter -m). The verbose parameter (-vv) is optional:

python3 main.py --encrypt -p 79 -a 30 -B 59 -m 44 -vv

image 1

Decryption

For the decryption process, it is necessary to add --decrypt, the parameters of the private key (-p, -a and -b), the encrypted message (parameter -m) and the ephemeral key received with the message (-ke). The verbose parameter (-vv) is optional:

python3 main.py --decrypt -p 79 -a 30 -b 61 -m 73 -ke 13 -vv

image 2

Signature

For the signing process, it is necessary to add --sign, the parameters of the private key (-p, -a and -b) and the plaintext message (parameter -m). The verbose parameter (-vv) is optional:

python3 main.py --sign -p 541 -a 128 -b 105 -m 95 -vv

image 3

Signature verification

For the signature verification process, it is necessary to add --verify, the parameters of the public key (-p, -a and -B), the plaintext message (parameter -m) and the signature parameters (-r and -s):

python3 main.py --verify -p 541 -a 128 -B 239 -m 95 -r 280 -s 65 -vv

image 4

About

A Python implementation of Elgamal algorithm: encryption, decryption and signature generation and verification

Topics

Resources

Stars

Watchers

Forks

Sponsor this project

Languages