Generating Rsa Key And Signing Java

This lesson demonstrates the use of the JDK Security API with respect to signing documents. The lesson shows what one program, executed by the person who has the original document, would do to generate keys, generate a digital signature for the document using the private key, and export the public key and the signature to files. Mar 03, 2020  Generating an RSA key with a self-signed X.509 certificate If you're validating keys against registry-level certificates, the certificate must meet certain requirements. One of these requirements.

Example of RSA generation, sign, verify, encryption, decryption and keystores in Java
RsaExample.java
Generating Rsa Key And Signing Java

Generating Rsa Key And Signing Java Download

Apr 07, 2004  I am looking the similar kind of requirement, where i need to generate the keys in java (public and private) and data (some raw text) should be encrypted with public key in java. Now the respective private key should be loaded in.Net and decrypt the data. /coreldraw-x4-key-generator-free-download.html. Could some one help me in this regard. Thanks in advance. Regards Satish Kumar Pulavarthy.

importjavax.crypto.Cipher;
importjava.io.InputStream;
importjava.security.*;
importjava.util.Base64;
import staticjava.nio.charset.StandardCharsets.UTF_8;
publicclassRsaExample {
publicstaticKeyPairgenerateKeyPair() throwsException {
KeyPairGenerator generator =KeyPairGenerator.getInstance('RSA');
generator.initialize(2048, newSecureRandom());
KeyPair pair = generator.generateKeyPair();
return pair;
}
publicstaticKeyPairgetKeyPairFromKeyStore() throwsException {
//Generated with:
// keytool -genkeypair -alias mykey -storepass s3cr3t -keypass s3cr3t -keyalg RSA -keystore keystore.jks
InputStream ins =RsaExample.class.getResourceAsStream('/keystore.jks');
KeyStore keyStore =KeyStore.getInstance('JCEKS');
keyStore.load(ins, 's3cr3t'.toCharArray()); //Keystore password
KeyStore.PasswordProtection keyPassword =//Key password
newKeyStore.PasswordProtection('s3cr3t'.toCharArray());
KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) keyStore.getEntry('mykey', keyPassword);
java.security.cert.Certificate cert = keyStore.getCertificate('mykey');
PublicKey publicKey = cert.getPublicKey();
PrivateKey privateKey = privateKeyEntry.getPrivateKey();
returnnewKeyPair(publicKey, privateKey);
}
publicstaticStringencrypt(StringplainText, PublicKeypublicKey) throwsException {
Cipher encryptCipher =Cipher.getInstance('RSA');
encryptCipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherText = encryptCipher.doFinal(plainText.getBytes(UTF_8));
returnBase64.getEncoder().encodeToString(cipherText);
}
publicstaticStringdecrypt(StringcipherText, PrivateKeyprivateKey) throwsException {
byte[] bytes =Base64.getDecoder().decode(cipherText);
Cipher decriptCipher =Cipher.getInstance('RSA');
decriptCipher.init(Cipher.DECRYPT_MODE, privateKey);
returnnewString(decriptCipher.doFinal(bytes), UTF_8);
}
publicstaticStringsign(StringplainText, PrivateKeyprivateKey) throwsException {
Signature privateSignature =Signature.getInstance('SHA256withRSA');
privateSignature.initSign(privateKey);
privateSignature.update(plainText.getBytes(UTF_8));
byte[] signature = privateSignature.sign();
returnBase64.getEncoder().encodeToString(signature);
}
publicstaticbooleanverify(StringplainText, Stringsignature, PublicKeypublicKey) throwsException {
Signature publicSignature =Signature.getInstance('SHA256withRSA');
publicSignature.initVerify(publicKey);
publicSignature.update(plainText.getBytes(UTF_8));
byte[] signatureBytes =Base64.getDecoder().decode(signature);
return publicSignature.verify(signatureBytes);
}
publicstaticvoidmain(String.. argv) throwsException {
//First generate a public/private key pair
KeyPair pair = generateKeyPair();
//KeyPair pair = getKeyPairFromKeyStore();
//Our secret message
String message ='the answer to life the universe and everything';
//Encrypt the message
String cipherText = encrypt(message, pair.getPublic());
//Now decrypt it
String decipheredMessage = decrypt(cipherText, pair.getPrivate());
System.out.println(decipheredMessage);
//Let's sign our message
String signature = sign('foobar', pair.getPrivate());
//Let's check the signature
boolean isCorrect = verify('foobar', signature, pair.getPublic());
System.out.println('Signature correct: '+ isCorrect);
}
}

commented Oct 17, 2019

It's good thank you so much , How can i create base64 like jwt (header,body,sign) ?

commented Nov 26, 2019

Thanks for the code. One issue - using openjdk version '11.0.5-ea' 2019-10-15 requires the KeyStore.getInstance('JCEKS') code to be KeyStore.getInstance('PKCS12').

Generating Rsa Key And Signing Java Code

commented Dec 29, 2019

@stdunbar: It depends on your keyStore creation.

Create Rsa Key

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