Sample code for 30+ languages & platforms
Dart Requires Chilkat v11.0.0+

RSA Encrypt RSA/ECB/OAEPWithSHA1AndMGF1Padding

See more RSA Examples

Demonstrates how to RSA encrypt using RSA/ECB/OAEPWithSHA1AndMGF1Padding. Also demonstrates RSA/ECB/OAEPWithSHA-256AndMGF1Padding. Both of these terms are from Java's JCE. Note: In this context, "ECB" doesn't actually mean anything. It's a symmetric cipher mode that doesn't apply (or make sense) in this context.

Chilkat Dart Downloads

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

void main() {
  // This example assumes the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final rsa = CkRsa();

  // First load a public key object with a public key.
  // In this case, we'll load it from a file.
  final pubkey = CkPublicKey();
  try {
    pubkey.loadFromFile('qa_data/pem/rsa_public.pem');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // RSA encryption is limited to small amounts of data. The limit
  // is typically a few hundred bytes and is based on the key size and
  // padding (OAEP vs. PKCS1_5).  RSA encryption is typically used for
  // encrypting hashes or symmetric (bulk encryption algorithm) secret keys.
  final plainText = 'Time is an illusion. Lunchtime doubly so.';

  // Import the public key to be used for encrypting.
  rsa.usePublicKey(pubkey);

  // To get OAEP padding, set the PkcsPadding property equal to false
  rsa.pkcsPadding = false;
  rsa.oaepHash = 'sha256';

  // Indicate we'll want hex output
  rsa.encodingMode = 'hex';

  // Encrypt..
  final usePrivateKey = false;
  final encryptedStr = rsa.encryptStringENC(plainText, usePrivateKey);
  print(encryptedStr);

  // -------------------------------------------------
  // Now decrypt with the matching private key.
  final rsa2 = CkRsa();

  final privKey = CkPrivateKey();
  try {
    privKey.loadEncryptedPem('qa_data/pem/rsa_passwd.pem', 'passwd');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  rsa2.usePrivateKey(privKey);

  // Make sure we have the same settings used for encryption.
  rsa2.pkcsPadding = false;
  rsa2.encodingMode = 'hex';
  rsa2.oaepHash = 'sha256';

  final originalStr = rsa2.decryptStringENC(encryptedStr, true);

  print(originalStr);
}