Skip to content

java library providing the implementation of ECDSA and useful algebraic structures such as finite fields

License

Notifications You must be signed in to change notification settings

trident2710/Crypto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto

Provides the implementation of ECDSA (elliptic curve digital signature algorithm) with the implementation of the modification based on scientific works.

Contains such useful items as

  • finite field ( GF(2^m) and GF(p)) implementation
  • elliptic curve over finite field implementation
  • built-in standard parameters for elliptic curves recommeded by SECP
  • ECDS algorithm to sign the messages and verify the signature

How to use it:

To create the elliptic curve form the standard (secure and proven) parameters proposed by SECP:

EllipticCurveOperator ar = EllipticCurveArithmetics.createFrom(SECP.SECP112R1);

This class allows to perform operations over elliptic curve points such as: -addition -multiplication -doubling -negation

Usage example:

EllipticCurvePoint G = ar.getEllipticCurve().getG(); //generator point of the elliptic curve
EllipticCurvePoint newPoint = ar.mul(BigInteger.valueOf(42), G);

ECDSA usage example:

String message = "Hello world!"; //the message which we want to secure
MessageDigest digest = MessageDigest.getInstance("SHA-256"); // choosing hash algorithm
byte[] hash = digest.digest(message.getBytes(Charset.defaultCharset())); // calculating hash of the message
ECDSA ecdsa = new ECDSA(EllipticCurveArithmetics.createFrom(SECP.SECP112R1); // creating ECDSA instance which works with the standard elliptic curve SECP112R1 
ECDSAKey key = ecdsa.generateKeyPair(); // generating key pair
String signature = ecdsa.sign(hash, key.getKeySec()); // signing the hash
ecdsa.verify(hash, key.getKeyPub(), signature) //verifying if the obtained hash is valid

About

java library providing the implementation of ECDSA and useful algebraic structures such as finite fields

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages