Created
July 25, 2021 00:35
-
-
Save Anass-ABEA/027933a7bf868854d32b2c3306bce7f5 to your computer and use it in GitHub Desktop.
RSA Encryption Manager from a String public key
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.thexcoders.RSA_server; | |
import javax.crypto.Cipher; | |
import java.security.KeyFactory; | |
import java.security.PublicKey; | |
import java.security.spec.X509EncodedKeySpec; | |
import java.util.Base64; | |
public class EncryptionManager { | |
private PublicKey publicKey; | |
private static final String PUBLIC_KEY_STRING = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYQYM3FwZuQNLK7xRbuBbAcviy1vl9LB//Ubz+NFSBjgrrGNPwqgOuWF1qskBOY0AnoAZpwHlWEryvtz1OGNX5q9boqrhOrGQebJfek9JGvjysz3+KCqAIup8C1Enp4+cUxYy7BRorjF6wqTAjyJn/SQVZPPUyVeN17Nw0jSqI9QIDAQAB"; | |
public void initFromStrings(){ | |
try{ | |
X509EncodedKeySpec keySpecPublic = new X509EncodedKeySpec(decode(PUBLIC_KEY_STRING)); | |
KeyFactory keyFactory = KeyFactory.getInstance("RSA"); | |
publicKey = keyFactory.generatePublic(keySpecPublic); | |
}catch (Exception ignored){} | |
} | |
private static String encode(byte[] data) { | |
return Base64.getEncoder().encodeToString(data); | |
} | |
private static byte[] decode(String data) { | |
return Base64.getDecoder().decode(data); | |
} | |
public String encrypt(String message) throws Exception { | |
byte[] messageToBytes = message.getBytes(); | |
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); | |
cipher.init(Cipher.ENCRYPT_MODE, publicKey); | |
byte[] encryptedBytes = cipher.doFinal(messageToBytes); | |
return encode(encryptedBytes); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment