Hohha Dynamic XOR Encryption Algorithm Logic

Until today, we were looking from the "wrong side" I guess.
We were all thinking that we must have a "fixed" key which must never change!

I begun to ask that question: "Why the key must be fixed?" and changed the paradigm.
And I decided to dynamically update the key in encyption and decryption process.

The essential logic of the algorithm is using the key as a "jump table" which is dynamically updated with every "jump" we make.

To understand better how it functions, suppose that we don't have a complex function.

Given the key body length(L) is a power of 2, and M is an integer to tell us where we are in the "key body":

We just take the byte at position M of the key body, we XOR that byte with the byte to be encrypted(X).
We increase the byte at position M and "jump to" (M+X)%L

So, every time we encrypt a byte, we also change the key. It's a bit more complicated than this. But essentially this is the base logic. In real function, we do more complex operations with more variables like the salt(or nonce) value, the last byte we encrypted, the key checksum(against related key attacks) etc.

Briefly, to decypher a ciphertext, a cracker needs to find out the key, and, to find out the key, cracker needs to find out the plaintext, because the key is dynamically updated according to plaintext during encryption process: Impossible!

If you want to learn about the details, just take a look at the source code I've published on this blog.

I believe this algorithm is the future of the encryption. Maybe "my algorithm" is not perfect. But, I believe, this "dynamic key" model is the right way for the encryption. It is in public domain. It is public property. And we all need it. Let's try to get it more secure and faster together, if possible.

Use it! And please, let me know if you use: ikizir@gmail.com


Bu blogdaki popüler yayınlar

Ben utanaydım, ama, bunlar gerçekleşmeyeydi

Visual proofs of Hohha Dynamic XOR Encryption Algorithm