Sitemap
Press enter or click to view image in full size

Member-only story

Hybrid Encryption: ECIES

3 min readJun 28, 2025

--

If you are into cybersecurity, you should know that public key cryptography is great at securing methods by using a public key, and that symmetric key encryption is fast and efficient. So what happens when we combine the two. For this, we get hybrid encryption, such as with ECIES (Elliptic Curve Integrated Encryption Scheme).

With ECIES, Alice creates a key pair of a and Q_A, where Q_A is her public key. She then passes Q_A to Bob. Alice now produces S=r.Q_A, which is another point on the curve. The value of S is then used to create a symmetric key (S_k) — normally by just taking the x-coordinate point of the point S. Alice then encrypts a message with S_k and then passes her public key (Q_A) and the ciphertext (C ) to Bob. From his private key (b) and Q_A, Bob is then able to regenerate the value of S and the same symmetric key (S_k). He will then be able to decrypt the message:

Press enter or click to view image in full size

An implementation of ECIES in Google Tink for Golang is [here]:


package main

import (
"fmt"
"os"
"strconv"
"github.com/tink-crypto/tink-go/v2/aead/aesgcm"
"github.com/tink-crypto/tink-go/v2/hybrid/ecies"
"github.com/tink-crypto/tink-go/v2/hybrid"
"github.com/tink-crypto/tink-go/v2/keyset"
)…

--

--

Prof Bill Buchanan OBE FRSE
Prof Bill Buchanan OBE FRSE

Written by Prof Bill Buchanan OBE FRSE

Professor of Cryptography. Serial innovator. Believer in fairness, justice & freedom. Based in Edinburgh. Old World Breaker. New World Creator. Building trust.