AESFile Manual

内容表

关于

AESFile provides means to create and work with AES encrypted files. Derived from BaseFile working with AES files works exactly the same as with other files, with the only exception of opening the file. So it is recommended to read BaseFile Manual first.

警告
For encryption using the MAXON API see Stream Conversions Manual .
// This example demonstrates encrypting a file and comparing the encrypted result with the original file.

// Let user choose a file to encrypt. Filename fnInput; if (!fnInput. FileSelect ( FILESELECTTYPE::ANYTHING , FILESELECT::LOAD , "Open file to encrypt..." _s)) return maxon::OK ;

AutoAlloc<BaseFile> fileInput; AutoAlloc<AESFile> fileAes; if (!fileInput || !fileAes) return maxon::OutOfMemoryError( MAXON_SOURCE_LOCATION );

// Open the input file. if (!fileInput-> Open (fnInput, FILEOPEN::READ , FILEDIALOG::ANY , BYTEORDER::V_INTEL , MACTYPE_CINEMA , MACCREATOR_CINEMA )) { return maxon::IoError( MAXON_SOURCE_LOCATION , MaxonConvert (fnInput, MAXONCONVERTMODE::NONE ), "Error: Failed to open input file." _s); }

Filename fnAes = fnInput; fnAes. SetSuffix ( "aes" _s); // Note: Password needs to be either 16, 24, or 32 characters long. const char pw[] = { 's' , 'p' , 'e' , 'a' , 'k' , ',' , ' ' , 'f' , 'r' , 'i' , 'e' , 'n' , 'd' , ',' , ' ' , 'a' , 'n' , 'd' , ' ' , 'e' , 'n' , 't' , 'e' , 'r' }; const Int32 keylen = sizeof (pw) * 8; // keylen is in bits DebugAssert ((keylen == 128) || (keylen == 192) || (keylen == 256)); const Int32 blocksize = 256; if (!fileAes-> Open (fnAes, pw, keylen, blocksize, 0, FILEOPEN::WRITE )) { return maxon::IoError( MAXON_SOURCE_LOCATION , MaxonConvert (fnAes, MAXONCONVERTMODE::NONE ), "Error: Failed to open AES file for writing." _s); } const Int fileSize = fileInput-> GetLength (); Char * buffer = NewMemClear ( Char , fileSize) iferr_return ; const Int readBytes = fileInput-> TryReadBytes (buffer, fileSize); if (readBytes != fileSize) { return maxon::UnexpectedError( MAXON_SOURCE_LOCATION , "Error: Failed to read data from input file." _s); } if (!fileAes-> WriteBytes (buffer, fileSize)) { return maxon::UnexpectedError( MAXON_SOURCE_LOCATION , "Error: Failed to write data to AES file." _s); } fileAes-> 关闭 (); fileInput-> 关闭 ();

// Finally check the encryption result. if ( AESFile::CheckEncryption (fnAes, fnInput, pw, keylen, blocksize)) { ApplicationOutput ( "Success: The encrypted file matches the encrypted version." _s); return maxon::OK ; } else { return maxon::UnexpectedError( MAXON_SOURCE_LOCATION , "Error: The encrypted file does not match the encrypted version." _s); }

Allocation/Deallocation

AESFile objects are created with the usual tools, see Entity Creation and Destruction Manual (Classic) .

Open

警告
For a plugin to be cross platform then the type and creator parameters must be correctly filled for Mac.

杂项

延伸阅读

BaseFile::Close
Bool Close()
BaseFile::TryReadBytes
Int TryReadBytes(void *data, Int len)
BaseFile::GetLength
Int64 GetLength()
Int
maxon::Int Int
定义: ge_sys_math.h:62
MACTYPE_CINEMA
#define MACTYPE_CINEMA
Standard Mac type code for Cinema 4D.
定义: ge_prepass.h:30
NewMemClear
#define NewMemClear(T, cnt)
定义: defaultallocator.h:205
FILEDIALOG::ANY
@ ANY
Show an error dialog for any error.
AESFile::CheckEncryption
static Bool CheckEncryption(const Filename &encrypt, const Filename &decrypt, const char *key, Int32 keylen, Int32 blocksize)
BYTEORDER::V_INTEL
@ V_INTEL
Intel, little endian.
Filename
Manages file and path names.
定义: c4d_file.h:93
maxon::OK
return OK
定义: apibase.h:2532
FILESELECTTYPE::ANYTHING
@ ANYTHING
Any file.
MAXONCONVERTMODE::NONE
@ NONE
No check if file exists under case-sensitive drives.
iferr_return
#define iferr_return
定义: resultbase.h:1434
MAXON_SOURCE_LOCATION
#define MAXON_SOURCE_LOCATION
定义: memoryallocationbase.h:66
BaseFile::Open
Bool Open(const Filename &name, FILEOPEN mode=FILEOPEN::READ, FILEDIALOG error_dialog=FILEDIALOG::IGNOREOPEN, BYTEORDER order=BYTEORDER::V_MOTOROLA, Int32 type='C4DC', Int32 creator='C4D1')
Filename::SetSuffix
void SetSuffix(const maxon::String &str)
MaxonConvert
maxon::Url MaxonConvert(const Filename &fn, MAXONCONVERTMODE convertMode)
BaseFile::WriteBytes
Bool WriteBytes(const void *data, Int len)
FILEOPEN::WRITE
@ WRITE
AESFile::Open
Bool Open(const Filename &name, const char *key, Int32 keylen, Int32 blocksize, UInt32 aes_flags, FILEOPEN mode=FILEOPEN::READ, FILEDIALOG error_dialog=FILEDIALOG::IGNOREOPEN, BYTEORDER order=BYTEORDER::V_MOTOROLA, Int32 type='C4DC', Int32 creator='C4D1')
Int32
maxon::Int32 Int32
定义: ge_sys_math.h:58
ApplicationOutput
#define ApplicationOutput(formatString,...)
定义: debugdiagnostics.h:207
MACCREATOR_CINEMA
#define MACCREATOR_CINEMA
Standard Mac creator code for Cinema 4D.
定义: ge_prepass.h:31
FILESELECT::LOAD
@ LOAD
Load dialog.
FILEOPEN::READ
@ READ
Open the file for reading.
AutoAlloc
定义: ge_autoptr.h:36
DebugAssert
#define DebugAssert(condition,...)
定义: debugdiagnostics.h:245
Char
maxon::Char Char
定义: ge_sys_math.h:54
Filename::FileSelect
Bool FileSelect(FILESELECTTYPE type, FILESELECT flags, const maxon::String &title, const maxon::String &force_suffix=maxon::String())

Copyright  © 2014-2025 乐数软件    

工业和信息化部: 粤ICP备14079481号-1