You are not logged in.
An example on how to save/load protected maps. Uses a private key (built from character codes rather than using a plaintext string). This is not encryption!
Download here (11kb .gmz, tested in v1.4.1757)
Depends on hmac_sha1()
///ds_map_hmac_sha1_save( id, filename, key )
var _map = argument0;
var _filename = argument1;
var _key = argument2;
var _str = ds_map_write( _map );
var _checksum = hmac_sha1( _key, _str );
var _buffer = buffer_create( string_length( _checksum ) + 1 + string_length( _str ) + 1, buffer_fixed, 1 );
buffer_write( _buffer, buffer_string, _checksum );
buffer_write( _buffer, buffer_string, _str );
buffer_save( _buffer, _filename );
buffer_delete( _buffer );
return true;
///ds_map_hmac_sha1_load( filename, key )
var _filename = argument0;
var _key = argument1;
if ( !file_exists( _filename ) ) {
return undefined;
show_debug_message( "ds_map_hmac_sha1_load: Error! File not found" );
}
var _buffer = buffer_load( _filename );
var _checksum = buffer_read( _buffer, buffer_string );
if ( buffer_tell( _buffer ) >= buffer_get_size( _buffer ) ) {
show_debug_message( "ds_map_hmac_sha1_load: Error! Only one string found (this is usually when someone has editted the file in Notepad)" );
return undefined;
}
var _str = buffer_read( _buffer, buffer_string );
if ( _checksum != hmac_sha1( _key, _str ) ) {
show_debug_message( "ds_map_hmac_sha1_load: Error! Checksum does not match expected checksum" );
return undefined;
} else {
var _map = ds_map_create();
ds_map_read( _map, _str );
return _map;
}
Last edited by Juju (2016-08-07 07:47:14)
Offline
Nice!
Abusing forum power since 1986.
Offline