Protect your data with AESCryptor in Unreal Engine 5
Leverage AES-128/192/256 encryption through Blueprint nodes or C++ functions. Secure save games, API keys, and more on Windows.

OVerview
The AESCryptor plugin provides powerful AES encryption and decryption capabilities directly in Unreal Engine 5. It supports three key sizes (128-bit, 192-bit, 256-bit) and allows developers to secure their sensitive data using industry-standard encryption directly through Blueprint nodes or C++ functions.
- AES Encryption & Decryption
- Blueprint Integration, use with Blueprints
- C++ Integration, use with CPP
- 128-, 192-, 256-bit Support
- Uses UTF-8

AESCryptor: Showcase
Protect your game saves easily with AESCryptor. Using AES-128/192/256 encryption, secure sensitive data like save games and API keys directly through Blueprint nodes or C++ functions. AESCryptor is perfect for Unreal Engine projects on Windows, offering high security with easy integration. Its broad platform support and detailed documentation make it simple to get started, whether you’re a beginner or a pro.
Documentation & News
Table of Content
Getting Started
- Download the AESCryptor plugin and place it in the
Plugins
folder of your Unreal Engine project. - Navigate to
Edit > Plugins
and enable AESCryptor. - Restart the editor once more to apply the changes.
- Download the AESCryptor plugin from the FAB Marketplace and import it into your Unreal Engine project.
- Navigate to
Edit > Plugins
and enable AESCryptor. - Restart the editor once more to apply the changes.
General Explanation
General Nodes
- Key Size (Enum) – AES_128 / AES_192 / AES_256
- Out: Base64 Key (String)
GenerateSalt:
Creates a 16-byte random salt and returns it as Base64 (use with PBKDF2).
- Out: Base64 Salt (String, 16 bytes)
- Password (String)
- Salt (Base64) (String, 16 bytes recommended)
- Iterations (Int, e.g., 200000)
- Key Size (Enum) – AES_128 / AES_192 / AES_256
- Out: Success (Bool), Error (String), Base64 Key (String)
- Out: Base64 Nonce (String, 12 bytes)
Base64 Nodes
- Input (String)
- Out: Success (Bool), Error (String), Base64 Output (String)
- Base64 Input (String)
- Out: Success (Bool), Error (String), Output String (UTF-8)
- Bytes (Byte Array)
- Out: Success (Bool), Error (String), Base64 Output (String)
- Base64 Input (String)
- Out: Success (Bool), Error (String), Output Bytes (Byte Array)
Encryption & Decryption Nodes
- Input (String) – set
bInputIsBase64
if it’s Base64 bytes - Key (String) – set
bKeyIsBase64
if provided as Base64 - Nonce (Base64) (String, 12 bytes)
- Key Size (Enum), bInputIsBase64 (Bool), bKeyIsBase64 (Bool)
- Out: Success (Bool), Error (String), Cipher (Base64), Tag (Base64)
- Cipher (Base64) (String), Tag (Base64) (String)
- Key (String) – set
bKeyIsBase64
if provided as Base64 - Nonce (Base64) (String), Key Size (Enum)
- bKeyIsBase64 (Bool), bOutputAsBase64 (Bool)
- Out: Success (Bool), Error (String), Output Text (String or Base64)
Nonce||Cipher||Tag
.
- Input (String) – set
bInputIsBase64
if it’s Base64 bytes - Key (String) – set
bKeyIsBase64
if provided as Base64 - Key Size (Enum), bInputIsBase64 (Bool), bKeyIsBase64 (Bool)
- Out: Success (Bool), Error (String), Packed (Base64)
- Packed (Base64) (String, format Nonce||Cipher||Tag)
- Key (String) – set
bKeyIsBase64
if provided as Base64 - Key Size (Enum), bKeyIsBase64 (Bool), bOutputAsBase64 (Bool)
- Out: Success (Bool), Error (String), Output Text (String or Base64)
Salt||Nonce||Cipher||Tag
.
- Input (String) – set
bInputIsBase64
if it’s Base64 bytes - Password (String), Iterations (Int, e.g., 200000)
- Out: Success (Bool), Error (String), Packed (Base64)
Salt||Nonce||Cipher||Tag
) with the same password and iterations.
- Packed (Base64) (String), Password (String), Iterations (Int)
- bOutputAsBase64 (Bool)
- Out: Success (Bool), Error (String), Output Text (String or Base64)
Encryption & Decryption Nodes
- Input (String), Key (String), Nonce (Base64) (String), Key Size, bInputIsBase64, bKeyIsBase64
- On Completed: Success (Bool), Error (String), Cipher (Base64), Tag (Base64)
- Cipher (Base64), Tag (Base64), Key, Nonce (Base64), Key Size, bKeyIsBase64, bOutputAsBase64
- On Completed: Success (Bool), Error (String), Output Text (String or Base64)
Nonce||Cipher||Tag
).
- Input, Key, Key Size, bInputIsBase64, bKeyIsBase64
- On Completed: Success (Bool), Error (String), Packed (Base64)
- Packed (Base64), Key, Key Size, bKeyIsBase64, bOutputAsBase64
- On Completed: Success (Bool), Error (String), Output Text (String or Base64)
Salt||Nonce||Cipher||Tag
).
- Input, Password, Iterations, bInputIsBase64
- On Completed: Success (Bool), Error (String), Packed (Base64)
- Packed (Base64), Password, Iterations, bOutputAsBase64
- On Completed: Success (Bool), Error (String), Output Text (String or Base64)
Usage in Blueprints

Blueprint Example
- Go to the /Plugins/AESCryptor content folder.
- If necessary, enable “Show Plugin Content” under “Settings” in your Content Browser.
- Then the folder will appear.
- Open the “Blueprints” subfolder and the “BP_NodeExample” file there.
- Here you’ll find usage examples.
Usage in C++
// in your build.cs
PublicDependencyModuleNames.AddRange(new[] { "Core", "CoreUObject", "Engine", "AESCryptor" });
// in your code
#include "AESCryptorBPLibrary.h"
#include "AESCryptorTypes.h"
Method 1: GCM Packed
FString KeyB64;
UAESCryptorBPLibrary::GenerateKey(EAESKeySize::AES_256, KeyB64);
bool bOk; FString Err; FString Packed;
UAESCryptorBPLibrary::EncryptStringAES_GCM_Packed(
TEXT("Top secret"), KeyB64, EAESKeySize::AES_256,
/*bInputIsBase64=*/false, /*bKeyIsBase64=*/true, bOk, Err, Packed);
FString Plain;
UAESCryptorBPLibrary::DecryptStringAES_GCM_Packed(
Packed, KeyB64, EAESKeySize::AES_256,
/*bKeyIsBase64=*/true, /*bOutputAsBase64=*/false, bOk, Err, Plain);
Method 2: PasswordEasy
const FString Password = TEXT("MyStrongPW!");
const int32 Iter = 200000;
bool bOk; FString Err; FString Packed;
UAESCryptorBPLibrary::EncryptStringAES_GCM_PasswordEasy(
TEXT("Hello world"), Password, Iter, /*bInputIsBase64=*/false,
bOk, Err, Packed);
FString Plain;
UAESCryptorBPLibrary::DecryptStringAES_GCM_PasswordEasy(
Packed, Password, Iter, /*bOutputAsBase64=*/false, bOk, Err, Plain);
Method 3: Manual Mode
FString KeyB64; UAESCryptorBPLibrary::GenerateKey(EAESKeySize::AES_256, KeyB64);
FString NonceB64 = UAESCryptorBPLibrary::GenerateNonceGCM();
bool bOk; FString Err; FString CipherB64, TagB64;
UAESCryptorBPLibrary::EncryptStringAES_GCM(
TEXT("Data"), KeyB64, NonceB64, EAESKeySize::AES_256,
/*bInputIsBase64=*/false, /*bKeyIsBase64=*/true, bOk, Err, CipherB64, TagB64);
FString Plain;
UAESCryptorBPLibrary::DecryptStringAES_GCM(
CipherB64, TagB64, KeyB64, NonceB64, EAESKeySize::AES_256,
/*bKeyIsBase64=*/true, /*bOutputAsBase64=*/false, bOk, Err, Plain);
Troubleshooting & Common Issues
Demonstration Content
You can find a demonstration map in the Unreal Engine’s AESCryptor Plugin Folder. Just go to “/All/Plugins/AESCrypter Content/Maps/” and load the Map. Hit “Play” and try it out by using the Demo UI which helps you to understand the plugin.
If you don’t see a “/Plugins/” Folder, go to your Content Drawer and click on the topper right corner on “Settings“. Activate “Show Plugin Content“.

Roadmap
- Complete Plugin Rework
- All Nodes got replaced and improved
- Multiple Methods and +GCM
- Unreal 5.2-5.6+ compatible + Windows/Linux/Mac/…
Release 1.1.
- The Plugin Download via Epic Games Launcher is corrupted and can’t be fixed on my side.
- Fixed: Packaging DLL Errors.
Initial Release.
- Initial release with AES-128, AES-192, and AES-256 encryption.
- Full Blueprint and C++ integration.
- Example project included for quick setup.
No entries.