Donate here if this asset helped you with a project

AES for gamemaker is a free, open source asset that anyone can use!

It is currently ~45% commented. If you have any enquiries, don't hesitate to send me an email.

Please leave a rating with information about how it helps you or if there is something missing, I would greatly appreciate it!

The next update will hopefully have more commented code and speed improvements.

This asset supports:

  • ECB and CBC mode support
  • 128, 192 and 256 mode support
  • Full hex, string and base64 interchangeable formatting
  • File encrypting/decrypting*
  • Initialization vectors
  • Data padding support

*Gamemaker studio is sandboxed, this will only encrypt/decrypt files in working_directory.

Since gamemaker wasn't designed to handle data super fast, any aes function will be incredibly slow. For example, 100 array values takes roughly 8 seconds to encrypt or decrypt. (Array, string and file times are all different).

The GM8 port has been discontinued.

All code is provided as is. You may alter any code and use it commercially. You must not claim it as your own, credit is required.

End User Licence Agreement (EULA).

Changes in 1.7.1

  • Changed all ds_grid values to array values (very slightly improved speed)
  • Spelling mistakes fixed
  • Array functionality
  • Array saving and loading to file
  • All data is now automatically padded, with 0% data loss (if used correctly)
  • All data has cbc support
  • Full hex, string and base64 interchangeable formatting
  • Read me file added with valuable tips

Version 1.7.1. Published October 15, 2017

Created with GameMaker: Studio v1.4.1772

Age Rating: 4+

Average Rating

This asset hasn't received enough reviews yet.

Your review

You can only review assets you've bought.


Märten R 06 June 2017

Nice asset

Useful extension that works well.

Downside is that due to its low speed it is not suitable for real-time data processing, for example exchanging encrypted data over network.

Few ideas for future:
* Encryption of strings of any length in CBC mode with automatic padding.
* Encryption of buffers.

This review was left for a previous version of this asset.


Lintydude (Publisher) 20 October 2017

Thank you for reviewing my extension! The new update brings CBC support for strings of any length (with automatic padding) and, you can encrypt buffers if you save them in a file with buffer_save(), then use aes_file(). As for the speed, I should be able to greatly improve that in a future update.

Package contents

Total size 18 KB

AES For 5.64 KB AES For Gamemaker
Rooms Scripts
add_round_key.gml 257 Bytes aes_array.gml 2.45 KB aes_array2.gml 2.61 KB aes_decrypt.gml 305 Bytes aes_encrypt.gml 273 Bytes aes_file.gml 2.49 KB aes_init.gml 1022 Bytes aes_string.gml 2.14 KB apply_padding_file.gml 609 Bytes apply_padding_hex.gml 251 Bytes apply_padding_string.gml 267 Bytes array2_load.gml 734 Bytes array2_save.gml 386 Bytes array_load.gml 572 Bytes array_save.gml 293 Bytes base64_to_hex.gml 77 Bytes base64_to_string.gml 65 Bytes check_padding.gml 278 Bytes check_padding_file.gml 939 Bytes dec_to_hex.gml 442 Bytes file_to_state.gml 408 Bytes forward_sbox_table.gml 6.47 KB generate_random_iv.gml 340 Bytes generate_random_key.gml 533 Bytes hex_to_base64.gml 77 Bytes hex_to_dec.gml 371 Bytes hex_to_iv.gml 406 Bytes hex_to_key.gml 439 Bytes hex_to_state.gml 459 Bytes hex_to_string.gml 361 Bytes ivtemp_to_iv.gml 234 Bytes key_expansion.gml 2.44 KB learning_resources.gml 477 Bytes mix_columns.gml 790 Bytes mix_columns_inverse.gml 818 Bytes mul11_calc.gml 315 Bytes mul11_table.gml 6.97 KB mul13_calc.gml 315 Bytes mul13_table.gml 6.97 KB mul14_calc.gml 315 Bytes mul14_table.gml 6.97 KB mul2_calc.gml 313 Bytes mul2_table.gml 6.72 KB mul3_calc.gml 313 Bytes mul3_table.gml 6.72 KB mul9_calc.gml 313 Bytes mul9_table.gml 6.72 KB rcon_calc.gml 145 Bytes rcon_table.gml 367 Bytes READ_ME.gml 2.97 KB remove_padding_file.gml 732 Bytes remove_padding_hex.gml 431 Bytes remove_padding_string.gml 427 Bytes reverse_sbox_table.gml 6.47 KB sbox_calc.gml 372 Bytes sbox_inverse_calc.gml 380 Bytes shift_rows_left.gml 627 Bytes shift_rows_right.gml 627 Bytes state_to_file.gml 407 Bytes state_to_hex.gml 251 Bytes state_to_iv.gml 228 Bytes state_to_ivtemp.gml 236 Bytes state_to_string.gml 240 Bytes string_to_base64.gml 65 Bytes string_to_hex.gml 224 Bytes string_to_iv.gml 389 Bytes string_to_key.gml 438 Bytes string_to_state.gml 445 Bytes sub_bytes.gml 247 Bytes sub_bytes_inverse.gml 263 Bytes xor_iv.gml 227 Bytes xor_iv_temp.gml 235 Bytes

What is the issue?

Back to Top