Skip to content

Practical Guide

Discover how to harness the power of the ecutils library in the examples below. With ecutils, you can take your applications to the next level by using Elliptic Curve Cryptography (ECC) for tasks like encoding messages, verifying signatures, and establishing secure communication channels. Let's get started!

Encoding Messages with Koblitz

Convert plain text into secure elliptic curve points with the Koblitz method. Here's the process:

# First, initialize the Koblitz with your chosen ECC curve.
from ecutils.algorithms import Koblitz

koblitz = Koblitz(curve_name='secp192k1')

# Now, let's encode a message into a point on the curve.
message = 'Hello, world!'
encoded_point, j = koblitz.encode(message)

# 'encoded_point' is now on the curve, and 'j' will aid in decoding later on.

Generating Digital Signatures

Assure the authenticity and integrity of your messages with digital signatures. Here's how you can create one:

# Start by getting your securely generated ECDSA private key.
from ecutils.algorithms import DigitalSignature

private_key = 123456789

# A good practice is to hash the message prior to signing.
message = 'Secure communication'
message_hash = hash(message)

# Instantiate a Digital Signature with your private key.
ds = DigitalSignature(private_key)

# Time to sign the message's hash.
r, s = ds.generate_signature(message_hash)

# Your signature, comprised of 'r' and 's', is prepared to confirm your message's authenticity.

Participating in Diffie-Hellman Key Exchange

Diffie-Hellman protocol is essential for creating a shared secret over an insecure channel without exposing private keys. Here's how it works:

# You'll need private keys for two participants.
from ecutils.protocols import DiffieHellman

alice_private = 12345
bob_private = 67890

# Set up instances for Alice and Bob.
alice_dh = DiffieHellman(alice_private)
bob_dh = DiffieHellman(bob_private)

# Alice computes a shared secret using Bob's public key.
alice_shared_secret = alice_dh.compute_shared_secret(bob_dh.public_key)

# Bob does the same with Alice's public key.
bob_shared_secret = bob_dh.compute_shared_secret(alice_dh.public_key)

# Ideally, Alice and Bob now have the same shared secret.

These examples should help you integrate ECC features into your projects. Whether you wish to safely encode data, create and verify signatures, or establish secure communication, ecutils is here to help.

Remember to peruse the ecutils documentation for specific details. With ecutils in your toolkit, you're equipped to enhance your applications' security. Happy coding!

In our upcoming sessions, we'll delve into each of the package's classes to expand your understanding of ecutils and its array of capabilities. Stay tuned!