Advanced Encryption Standard in Luau

This resource needs to be known more. Not gonna lie.

Really useful.

not really, they can just use whatever youā€™re using to decrypt it or just make a decrypter themselves by reading your encryptor script

Seems that link is invalid. Hereā€™s a working link to Parallel Luau.

Additionally, the main difference between coroutines/tasks vs Parallel Luau is that the lua thread created using coroutines/tasks has to wait-in-line for the thread scheduled before it to yield or die; meanwhile, this is all happening on the same OS-thread. Parallel Luau utilizes >1 OS-threads, which balances the load more evenly.
See: Parallel Luau | Roblox Creator Documentation

1 Like

Iā€™m going to write a wrapper function for this (with authentication and key derivation handled automatically) and see how it goes.

Upcoming update

Well, I quitted the forumā€¦ a little bit but Iā€™m back.
So excited to announce that this resource has been rewritten from scratch and the library will suffer a lot of changes:

  • bytes type will be superseded by buffers which are better for its easy management and performance.
  • AES library will now contain constructors for a new data type: AesCipher which performs better at encrypting and/or decrypting a lot of small and large files and doesnā€™t run key expansion every time it is needed.
  • LUTs will be optimized for more direct calculations and also giving some resistance to side-channel attacks.
  • Block cipher modes of operation now will have their own space at Aes.modes and each of them no longer impact performance. Custom modes can be added as well.

At performance, this library improved the code a lot so it can now process large ammounts of data in a quite short time. Luau Native Code support and Parallel Scripting can be easily ported so it can get even faster than ever! Thus, making this the fastest and most suitable AES library for Roblox.
Some quick tests (ECB mode):

Plaintext size Encryption av. time Decryption av. time
16 bytes 0.000037 0.000043
32 bytes 0.000054 0.000059
80 bytes 0.000095 0.000115
1600 bytes (1.6 KB) 0.000981 0.001284
3200 bytes 0.002089 0.001939
160000 bytes (160 KB) 0.100983 0.103678
1000000 bytes (1 MB) 0.586153 0.641533
5000000 bytes (5 MB) 2.964735 2.918804
10000000 bytes (10 MB) 5.991347 5.897557
Some MicroProfiler test

Itā€™s soooo ridiculous fast that I canā€™t profile it really well. Help


This update will be released when buffers are oficially added to Roblox. Meanwhile I would love to hear some feedback from you. Stay tuned!

3 Likes

Really excited to see this come out!

3 Likes

Do you think you could do test-release for the newer version (if it is complete) so we can give some feedback?

1 Like

I can send you the preview version via DM.

1 Like