Open Search
    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:2861
    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