Skip to content
This repository was archived by the owner on May 7, 2024. It is now read-only.

Commit cf034a5

Browse files
committed
Optimised encrypt and decrypt functions
Moved the outside loop inside and inside one outside to achieve better data locality. Improvement rate goes up with key size. (~170% faster on standard 256-bit key)
1 parent aac11db commit cf034a5

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

main.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,9 +432,9 @@ int generate_lookup_tables(const int seed)
432432

433433
void encrypt(long long id, long long num_threads, long long key_size, unsigned char *key, long long buffer_size, unsigned char *buffer, unsigned char *lookup_table)
434434
{
435-
for (long long i = id; i < buffer_size; i += num_threads)
435+
for (long long j = 0; j < key_size; ++j)
436436
{
437-
for (long long j = 0; j < key_size; ++j)
437+
for (long long i = id; i < buffer_size; i += num_threads)
438438
{
439439
buffer[i] = lookup_table[key[j] * 256 + (buffer[i] + i) % 256];
440440
}
@@ -443,9 +443,9 @@ void encrypt(long long id, long long num_threads, long long key_size, unsigned c
443443

444444
void decrypt(long long id, long long num_threads, long long key_size, unsigned char *key, long long buffer_size, unsigned char *buffer, unsigned char *lookup_table)
445445
{
446-
for (long long i = id; i < buffer_size; i += num_threads)
446+
for (long long j = key_size - 1; j > -1; --j)
447447
{
448-
for (long long j = key_size - 1; j > -1; --j)
448+
for (long long i = id; i < buffer_size; i += num_threads)
449449
{
450450
buffer[i] = (lookup_table[key[j] * 256 + buffer[i]] - i) % 256;
451451
}

0 commit comments

Comments
 (0)