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.

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 |
Generating Rsa Key And Signing Java Code
commented Dec 29, 2019
@stdunbar: It depends on your keyStore creation. |