public static String encryptMessagePublicKey(final String plainMessage, final String hexPublicKey)
     throws IllegalArgumentException {
   checkStringArgument(plainMessage);
   checkStringArgument(hexPublicKey);
   AsymmetricCipher cipher = new AsymmetricCipher();
   AsymmetricPublicKey publicKey = new AsymmetricPublicKey(hexPublicKey);
   return cipher.encryptWithPublicKey(plainMessage, publicKey);
 }
  public static String decryptMessagePrivateKey(
      final String encryptedMessage, final String hexPrivateKey) throws IllegalArgumentException {
    checkStringArgument(encryptedMessage);
    checkStringArgument(hexPrivateKey);
    AsymmetricCipher cipher = new AsymmetricCipher();
    AsymmetricPrivateKey privateKey = new AsymmetricPrivateKey(new BigInteger(hexPrivateKey, 16));
    try {
      return cipher.decryptWithPrivateKey(encryptedMessage, privateKey);
    } catch (Exception ex) {

      System.out.println("ex = " + ex);
      throw new IllegalArgumentException(ex.getMessage());
    }
  }