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

RSA Encrypt and Decrypt Strings

See more RSA Examples

_LANGUAGE_ sample code to RSA public-key encrypt and decrypt strings using public and private keys.

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();

  // This example also generates the public and private
  // keys to be used in the RSA encryption.
  // Normally, you would generate a key pair once,
  // and distribute the public key to your partner.
  // Anything encrypted with the public key can be
  // decrypted with the private key.  The reverse is 
  // also true: anything encrypted using the private
  // key can be decrypted using the public key.

  // Generate a 2048-bit key.  Chilkat RSA supports
  // key sizes ranging from 512 bits to 4096 bits.
  final privKey = CkPrivateKey();
  try {
    rsa.genKey(2048, privKey);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final pubKey = CkPublicKey();
  privKey.toPublicKey(pubKey);

  final plainText = 'Encrypting and decrypting should be easy!';

  // Start with a new RSA object to demonstrate that all we
  // need are the keys previously exported:
  final rsaEncryptor = CkRsa();

  // Encrypted output is always binary.  In this case, we want
  // to encode the encrypted bytes in a printable string.
  // Our choices are "hex", "base64", "url", "quoted-printable".
  rsaEncryptor.encodingMode = 'hex';

  // We'll encrypt with the public key and decrypt with the private
  // key.
  rsaEncryptor.usePublicKey(pubKey);

  var usePrivateKey = false;
  final encryptedStr = rsaEncryptor.encryptStringENC(plainText, usePrivateKey);
  print(encryptedStr);

  // Now decrypt:
  final rsaDecryptor = CkRsa();

  rsaDecryptor.encodingMode = 'hex';
  rsaDecryptor.usePrivateKey(privKey);

  usePrivateKey = true;
  final decryptedStr = rsaDecryptor.decryptStringENC(encryptedStr, usePrivateKey);

  print(decryptedStr);
}