Java EdDSA (Ed25519 / Ed448) Example

EdDSA (Edwards-Curve Digital Signature Algorithm) [RFC 8032] is another additional digital signature scheme added in Java 15 thorough JEP 339.

It does not replace the existing Elliptic Curve Digital Signature Algorithm (ECDSA) in JDK.

EdDSA provides following parameter choices :

Algorithm NameDescription
EdDSAEdwards-Curve signature algorithm as defined in RFC 8032
Ed25519Edwards-Curve signature algorithm with Ed25519 as defined in RFC 8032
Ed448Edwards-Curve signature algorithm with Ed448 as defined in RFC 8032

1. Advantages of EdDSA (using Ed25519)

  • Provides platform-independent implementation of EdDSA with better performance than the existing ECDSA implementation.
  • Does not change the execution time based on the length of secret key.
  • Provides standardized parameter sets such as Ed25519 and Ed448 which can be specified using identifiers.
  • It is scheduled to be integrated with JSSE for TLS 1.3. It is one of only three signature schemes that are allowed in TLS 1.3.

2. Java EdDSA Example

Given below is a code example of how to use the EdDSA algorithm in a Java program to encrypt a String.

import java.nio.charset.StandardCharsets;
import java.security.*;
import java.util.Base64;

public class EdwardAlgoExample {
  public static void main(String[] args)
      throws NoSuchAlgorithmException, InvalidKeyException, SignatureException {

    KeyPairGenerator kpg = KeyPairGenerator.getInstance("Ed25519");
    KeyPair kp = kpg.generateKeyPair();

    byte[] msg = "test_string".getBytes(StandardCharsets.UTF_8);

    Signature sig = Signature.getInstance("Ed25519");
    sig.initSign(kp.getPrivate());
    sig.update(msg);
    byte[] s = sig.sign();

    String encodedString = Base64.getEncoder().encodeToString(s);
    System.out.println(encodedString);
  }
}

Program output.

O+FQIdJylUF0GW//O+gVGmsAwGDQBuCZkULqgQdpvj
H3koFL3wpSrwN1zzjgWOGLXtyDFrJxvwD1J7rIIY+AAw==

Happy Learning !!

Was this post helpful?

Join 8000+ Awesome Developers, Like YOU!

2 thoughts on “Java EdDSA (Ed25519 / Ed448) Example”

  1. Getting an exception
    java.security.NoSuchAlgorithmException: Ed25519 KeyPairGenerator not available

    What java version is used and is there a specific maven dependency required?

    Reply

Leave a Comment

About HowToDoInJava

This blog provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions, and frequently asked interview questions.