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); |
| } |
| } |
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> |

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