Sample code for 30+ languages & platforms
React Native Requires Chilkat v11.1.0+

openssl enc decrypt

See more Encryption Examples

Demonstrates how to decrypt a file that was encrypted using "openssl enc".

This example shows how to decrypt what was created using this openssl command:

openssl enc -e -aes-256-cbc -in hamlet.xml -out hamlet.enc -pass file:./secret.txt

This example shows how to do this:

openssl enc -d -aes-256-cbc -in hamlet.enc -out hamlet_dec.xml -pass file:./secret.txt

Chilkat React Native Downloads

React Native
import { BinData, Crypt2 } from '@chilkat/react-native'

function chilkatExample() {
  let success = false;

  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  const crypt = new Crypt2();

  // Use aes-256-cbc
  crypt.cryptAlgorithm = 'aes';
  crypt.cipherMode = 'cbc';
  crypt.keyLength = 256;

  // We'll need to set the hash algorithm to either MD5 or SHA256.
  // openssl version 1.0.* or earlier used MD5 by default
  // openssl version 1.1.* uses SHA-256 for the password to secret key derivation.

  // For example, if openssl 1.1.0 was used, we should do this:
  crypt.hashAlgorithm = 'sha256';

  // This example assumes openssl 1.0.2 was used to encrypt what we're now decrypting:
  crypt.hashAlgorithm = 'md5';

  // The openssl command we are duplicating is:
  // 
  //    openssl enc -d -aes-256-cbc -in hamlet.enc -out hamlet_dec.xml -pass file:./secret.txt
  // 
  // The file secret.txt contains the word "secret".  We could write code to load the contents
  // of secret.txt, but instead we'll just do this:
  crypt.setEncodedKey('secret', 'openssl');

  // Load the file to be decrypted.
  const fileData = new BinData();
  success = true;
  try {
    fileData.loadFile('qa_data/openssl_enc/hamlet.enc');
  } catch {
    success = false;
  }

  // Decrypt
  crypt.verboseLogging = true;
  success = true;
  try {
    crypt.decryptBd(fileData);
  } catch {
    success = false;
  }
  console.log(crypt.lastErrorText);

  // Save the decrypted output.
  success = true;
  try {
    fileData.writeFile('c:/temp/qa_output/hamlet_dec.xml');
  } catch {
    success = false;
  }

  console.log(`success = ${success}`);
}