コード例 #1
0
ファイル: Program.cs プロジェクト: Cawa425/DecryptionThings
        public static void FrequencyTable()
        {
            var text = "aaa";
            var key  = "69";

            Xor.SingleByteXorEncrypt(text, key);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: Cawa425/DecryptionThings
        private static void Task4()
        {
            var str1 = "1c0111001f010100061a024b53535009181c";
            var str2 = "686974207468652062756c6c277320657965";

            var result = "746865206b696420646f6e277420706c6179";

            Console.WriteLine(Xor.BytePerByteFromHexToHex(str1, str2).ToLower());
            Console.WriteLine(result == Xor.BytePerByteFromHexToHex(str1, str2).ToLower());
            Console.WriteLine(Hex.FromHexString("746865206b696420646f6e277420706c6179"));
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: Cawa425/DecryptionThings
        private static void Task51()
        {
            var text = "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736";

            var a = text.Length; //68

            for (int i = 2; i < a / 2; i++)
            {
                if (a % i != 0)
                {
                    continue;
                }
                var length = text.Length / i;
                var strs   = new List <string>();

                //делим блоки попарно
                for (var t = 0; t < i; t++)
                {
                    var tmp = text.Substring(t * length, length);
                    strs.Add(tmp);
                }

                if (strs.Count % 2 != 0)
                {
                    continue;
                }
                //находим расстояние
                var averageHamingDistance = 0;

                for (var t = 0; t < strs.Count; t += 2)
                {
                    var xor             = Xor.XoringTwoBinars(strs[t], strs[t + 1]);
                    var HammingDistance = xor.Count(x => x == '1');
                    averageHamingDistance += HammingDistance;
                }

                averageHamingDistance /= strs.Count / 2;
                //Взламываем
                var blocks = new StringBuilder();


                for (var m = 0; m *averageHamingDistance < text.Length; m++)
                {
                    blocks.Append(new String(text.Skip(m * averageHamingDistance).Take(averageHamingDistance).ToArray()));
                }

                var kek = blocks.Length;
                Console.WriteLine("\n");
            }

            var d = a / 4; //16
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: Cawa425/DecryptionThings
        public static void Task5()
        {
            var text = "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736";

            //var text = "ciphertext";
            //68
            Console.WriteLine((Xor.RepeatingKey(text, "88")));
            var str     = new StringBuilder();
            var results = new Dictionary <int, double>();

            for (var i = 1; i < text.Length / 2; i++)
            {
                str.Append(new string(text.Skip(text.Length - i).ToArray()));
                str.Append(new string(text.Take(text.Length - i).ToArray()));
                var count = text.Select((t1, t) => t1 == str.ToString()[t] ? 1 : 0).Sum();

                var value = (double)count / text.Length;
                str.Clear();
                results.Add(i, value);
                Console.WriteLine("{0} {1}", i, Math.Round(value, 3, MidpointRounding.ToEven));
            }
            var temp = results.ToList();

            temp.Sort((x, m) => x.Value.CompareTo(m.Value));
            temp.Reverse();
            var blocks = new List <string>();

            for (var i = 0; i < 2; i++)
            {
                var distance = temp[i].Key;
                var index    = 0;
                var stringB  = new StringBuilder();

                for (var m = 0; m < distance; m++)
                {
                    index = m;

                    while (index < text.Length)
                    {
                        stringB.Append(text[index]);
                        index += distance;
                    }
                    blocks.Add(stringB.ToString());
                    stringB.Clear();
                }
                //получаем блоки
                var b = Xor.RepeatingKey(blocks[0], " ");
                Console.WriteLine();
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: Cawa425/DecryptionThings
        private static void Task7()
        {
            string[] text =
            {
                "Burning 'em, if you ain't quick and nimble",
                "I go crazy when I hear a cymbal"
            };
            var key         = "ICE";
            var adaptiveKey = new StringBuilder();

            adaptiveKey.Append(key);

            foreach (var str in text)
            {
                var tmp = Xor.RepeatingKey(str, key);
                Console.WriteLine(tmp);
            }
        }