Elliptic Curve Cryptography, a public key cryptography system that makes use of private and public keys of receiver to encrypt a message, is used to create a secured messaging service in Python.

Using Python and NumPy library, i have created the Elliptic Curve Cryptography based encryption and decryption service that sends messages in a secured way. It can be used in numerous applications besides messaging.

The algorithm for Elliptic Curve Cryptography is :

Algorithm:

E -> Elliptic Curve in the form of y^{2} = x^{3} + a*x + b

where, a and b are constants

P -> Point on the curve

n -> Maximum limit ( This should be a prime number )

**Key Generation**

1. select a number ‘d’ within the range n.

2. Generate public key by Q = d * P

(d = The random number that we have selected within the range of ( 1 to n-1 ). P is

the point on the curve.)

3.Private key =d , Public key = Q**Encryption**

4.Take input message in form of point M.

5.Randomly select ‘k’ from [1 – (n-1)].

6. Generate 2 cipher texts:

C1 = k*P

C2 = M + k*Q

C1 and C2 will be sent.**Decryption**

M = C2 – d * C1

M is the original message that we have sent

The code takes in values of n,a,b and d as inputs.

It generates the generator point G and public keys for the encryption.

It then takes in the message as input and encrypts it.

This is then decrypted at the receivers side back into the message.

**For example :**

Submitted by Shivang Kohli (shivangkohli)

Download packets of source code on Coders Packet

## Comments