Username: 
Password: 
Restrict session to IP 
Questions  |  score: 6  |  4.97 5.83 7.54 |  Solved By 164 People  |  79007 views  |  since Sep 08, 2010 - 17:36:54

GizCrypt (Crypto)

Sourcecode of "inc/util/GWF_Crypt.php"
<?php
/**
 * Encrypt with some simple XOR algo.
 * This is not cryptographically safe and designed to be easily broken!
 * @author gizmore
 * @version 1.0
 */
final class GWF_Crypt
{
	public static function encrypt($plaintext, $key)
	{
		return self::decrypt($plaintext, $key);
	}

	public static function decrypt($ciphertext, $key)
	{
		if (0 === ($klen = strlen($key))) {
			die('Error: Invalid key for decryption');
		}
		$back = '';
		$len = strlen($ciphertext);
		$x = 1;
		$k = -1;
		$e = ord('e');
		for ($i = 0; $i < $len; $i++)
		{
			$k += $x;
			if ($k >= $klen) {
				$k = 0;
				$x++;
				if ($x >= $klen) {
					$x = 1;
				}
			}
			$back .= chr(ord($key[$k%$klen]) ^ ord($ciphertext[$i]) ^ $e);
		}
		return $back;
	}
}

Gizmore Encryption
I created an symmetric encryption to add a layer of security or obfuscation to my projects.
Can you help me and find out if it`s easily broken, even when the key is secret?

You can take a look at the algorithm, also as highlighted version.

To prove that it`s easily broken, you have to decipher the following message.
The whole plaintext is readable and in the current language.
There are no line breaks, but correct punctuation.
There is one word that does not exist: your random solution, which is 12 random chars in uppercase HEX.

64 74 7A 59 6B 3A 36 5B 7E 37 72 49 73 69 65 2A
6D 45 5E 73 37 55 6B 7F 0C 77 73 49 36 4D 70 40
6F 0C 63 43 21 5E 74 77 51 24 62 7E 7B 79 37 75
49 6E 70 38 2A 55 44 5C 65 37 45 77 2A 4D 7B 60
56 7F 42 75 0D 2A 65 63 0C 76 43 64 7A 51 24 74
73 32 69 78 6E 40 36 6D 70 2A 78 43 40 36 74 4D
6A 2A 40 73 60 5A 73 0C 73 0C 67 49 64 5F 60 4B
74 36 5C 6A 36 62 7A 6F 37 72 43 7A 71 62 63 6E
42 15 70 78 5E 71 67 5F 3A 21 58 73 40 7E 45 64
4B 37 59 72 0C 79 79 42 24 6F 79 67 2A 64 6E 40
60 61 72 2A 68 58 1B 36 58 44 28 2A 65 36 60 40
7B 43 61 58 2A 4A 78 5E 66 43 65 36 41 6B 36 62
77 66 7B 21 55 79 71 36 7E 69 49 15 66 76 5F 77
7D 43 64 65 16 36 1F 51 19 3B 69 24 1E 38 18 25
50 73 2A 36 5F 7C 2A 74 60 5F 73 24 6F 65 74 0C
54 64 72 0C 77 7E 45 7A 6D 0C 62 5E 6B 45 64 4B
37 4D 6F 48 31 7E 54 72 73 36 7C 65 37 6D 59 75
6F 3A 2A 78 43 40 36 7A 4D 7D 68 49 36 6F 49 73
48 32 5F 65 41 72 0C 6C 43 63 73 15 67 7F 66 7A
6F 65 75 49 6E 70 38 2A 55 44 5C 65 37 45 77 2A
58 7E 64 0C 73 42 76 0C 65 4A 37 58 69 49 31 7B
50 77 65 77 75 6F 39 

You can also download the ciphertext as a file.

Additional hint: The secret key is 11 chars long, and contains only a-zA-Z.
Thanks go out to Edge and Stack for their feedback and testing the challenge.
Your solution for GizCrypt
Answer
© 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 and 2024 by Gizmore