Sample code for 30+ languages & platforms
Dart 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 Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  var success = false;

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

  final crypt = CkCrypt2();

  // 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.
  final fileData = CkBinData();
  success = true;
  try {
    fileData.loadFile('qa_data/openssl_enc/hamlet.enc');
  } on ChilkatException {
    success = false;
  }

  // Decrypt
  crypt.verboseLogging = true;
  success = true;
  try {
    crypt.decryptBd(fileData);
  } on ChilkatException {
    success = false;
  }
  print(crypt.lastErrorText);

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

  print('success = $success');
}