Generate Public Key From Private Key Ecdsa Encryption Java

Oct 04, 2019  ECDSA with secp256k1 in Java: generate ECC keys, sign, verify - ECDSA-secp256k1-example.java. Sep 11, 2012  This site uses cookies for analytics, personalized content and ads. By continuing to browse this site, you agree to this use.

ECDSA with secp256k1 in Java: generate ECC keys, sign, verify
ECDSA-secp256k1-example.java
importorg.bouncycastle.util.encoders.Hex;
importorg.web3j.crypto.*;
importjava.math.BigInteger;
publicclassECCExample {
publicstaticStringcompressPubKey(BigIntegerpubKey) {
String pubKeyYPrefix = pubKey.testBit(0) ?'03':'02';
String pubKeyHex = pubKey.toString(16);
String pubKeyX = pubKeyHex.substring(0, 64);
return pubKeyYPrefix + pubKeyX;
}
publicstaticvoidmain(String[] args) throwsException {
//BigInteger privKey = Keys.createEcKeyPair().getPrivateKey();
BigInteger privKey =newBigInteger('97ddae0f3a25b92268175400149d65d6887b9cefaf28ea2c078e05cdc15a3c0a', 16);
BigInteger pubKey =Sign.publicKeyFromPrivate(privKey);
ECKeyPair keyPair =newECKeyPair(privKey, pubKey);
System.out.println('Private key: '+ privKey.toString(16));
System.out.println('Public key: '+ pubKey.toString(16));
System.out.println('Public key (compressed): '+ compressPubKey(pubKey));
String msg ='Message for signing';
byte[] msgHash =Hash.sha3(msg.getBytes());
Sign.SignatureData signature =Sign.signMessage(msgHash, keyPair, false);
System.out.println('Msg: '+ msg);
System.out.println('Msg hash: '+Hex.toHexString(msgHash));
System.out.printf('Signature: [v = %d, r = %s, s = %s]n',
signature.getV() -27,
Hex.toHexString(signature.getR()),
Hex.toHexString(signature.getS()));
System.out.println();
BigInteger pubKeyRecovered =Sign.signedMessageToKey(msg.getBytes(), signature);
System.out.println('Recovered public key: '+ pubKeyRecovered.toString(16));
boolean validSig = pubKey.equals(pubKeyRecovered);
System.out.println('Signature valid? '+ validSig);
}
}
Generate Public Key From Private Key Ecdsa Encryption Java
pom.xml
<?xml version='1.0' encoding='UTF-8'?>
<projectxmlns='http://maven.apache.org/POM/4.0.0'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd'>
<modelVersion>4.0.0</modelVersion>
<groupId>bc-examples</groupId>
<artifactId>bc-examples</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.web3j</groupId>
<artifactId>crypto</artifactId>
<version>3.3.1</version>
</dependency>
</dependencies>
</project>
Java

commented Apr 5, 2018

The expected output is as follows:

Generate Rsa Public Private Key

commented Sep 16, 2018

java.security package contains ECDSA classes for generating the key pair, signing and verifying signatures.

Generate Rsa Public Key

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment