GeCipher256 Manual

About

GeCipher256 class provides means to encrypt and decrypt data.

Warning
This class only uses a simple and insecure scrambling. Use advanced algorithms like AES if security is really needed.
For encryption using the MAXON API see Stream Conversions Manual.
// This example demonstrates the encryption and decryption of a string.
Char plainText[] = "O brave new world / That has such people in't!";
const Int32 length = sizeof(plainText);
ApplicationOutput("Plain Text: @"_s, maxon::String(plainText));
// Define an en-/decryption key.
const Char key[32] = { '7', 'c', '3', '0', 'e', '0', '0', 'b', 'b', '6', '2', '7', '1', '4', '9', '5' };
const Int32 keyLength = sizeof(key); // in bytes
// Initialize GeCipher256 instance.
GeCipher256 cipher;
if (!cipher.Open(key, keyLength, false))
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION, "The function exited unexpectedly on initializing GeCipher256"_s);
// Encryption is in-situ.
cipher.Encrypt(plainText, length);
// Get a copy of the encrypted string, just for the purpose of displaying it on console.
Char plainTextEncoded[sizeof(plainText) + 1]; // one extra byte for null termination
CopyMem(plainText, plainTextEncoded, length);
plainTextEncoded[sizeof(plainText)] = 0; // string null termination
// Note: This is too simple and might only show part of the string, if the encoded string contains null bytes.
ApplicationOutput("Encoded Text: @"_s, maxon::String(plainTextEncoded));
// Decryption is in-situ.
cipher.Decrypt(plainText, length);
const maxon::String str { (char*)plainText };
ApplicationOutput("Decoded text: @"_s, str);
cipher.Close();
PyObject * key
Definition: abstract.h:289
void CopyMem(const void *s, void *d, Int size)
Definition: c4d_memory.h:66
A class that encrypts data using an insecure scrambling.
Definition: c4d_tools.h:2949
void Decrypt(void *mem, Int32 size)
void Encrypt(void *mem, Int32 size)
Bool Open(const void *key, Int32 klength, Bool stream)
void Close()
Closes the cipher engine.
Definition: string.h:1235
void * str
Definition: bytesobject.h:77
maxon::Char Char
Definition: ge_sys_math.h:56
maxon::Int32 Int32
Definition: ge_sys_math.h:60
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:67
#define ApplicationOutput(formatString,...)
Definition: debugdiagnostics.h:210
PyWideStringList Py_ssize_t length
Definition: initconfig.h:448

Create

A GeCipher256 instance can be created by simply defining it (e.g. as a local variable). No special allocation is needed.

Use

Encryption / Decryption

Further Reading