RSA Encryption / Decryption using Java

后端 未结 2 1359
难免孤独
难免孤独 2020-12-30 18:02

I am doing a simple program to encrypt/decrypt using RSA algorithm in Java. I create a cipher object as follows:

//Create a Cipher object
Cipher rsaCipher =          


        
2条回答
  •  無奈伤痛
    2020-12-30 18:34

    //This is a complete encryption and decryption module using 
    //Algorithm: JWEAlgorithm.RSA_OAEP_256
    //Encryption Method: A128CBC_HS256
    
    public static String  encrypt(String text) throws Exception {
        // Set the plain text
        Payload payload = new Payload(text);
        // Create the header
        JWEHeader header = new JWEHeader(JWEAlgorithm.RSA_OAEP_256, EncryptionMethod.A128CBC_HS256);
        // Create the JWE object and encrypt it
        JWEObject jweObject = new JWEObject(header, payload);
        jweObject.encrypt(new RSAEncrypter(getPublicKey()));
        // Serialise to compact JOSE form...
        String jweString = jweObject.serialize();
        LOG.info("Generated Encrypted Key : {}", jweString);
        return jweString;
    }
    
    public static String decrypt(String text) throws Exception {
        // Parse into JWE object...
        JWEObject jweObject = JWEObject.parse(text);
        jweObject.decrypt(new RSADecrypter(getPrivateKey()));
        // Get the plain text
        Payload payload = jweObject.getPayload();
        System.out.println(payload.toString());
        return payload.toString();
    }
    
    private static RSAPublicKey getPublicKey() throws Exception {
        String filename = "/home/vaibhav/Setups/cert/pub.der";
        File f = new File(filename);
        FileInputStream fis = new FileInputStream(f);
        DataInputStream dis = new DataInputStream(fis);
        byte[] keyBytes = new byte[(int)f.length()];
        dis.readFully(keyBytes);
        dis.close();
    
        X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        return (RSAPublicKey) kf.generatePublic(spec);
    }
    
    private static RSAPrivateKey getPrivateKey() throws Exception {
        String filename = "/home/vaibhav/Setups/cert/private.pkcs8";
        File f = new File(filename);
        FileInputStream fis = new FileInputStream(f);
        DataInputStream dis = new DataInputStream(fis);
        byte[] keyBytes = new byte[(int)f.length()];
        dis.readFully(keyBytes);
        dis.close();
    
        PKCS8EncodedKeySpec spec1 = new PKCS8EncodedKeySpec(keyBytes);
        KeyFactory kf = KeyFactory.getInstance("RSA");
        return (RSAPrivateKey) kf.generatePrivate(spec1);
    }
    

提交回复
热议问题