Ejemplo n.º 1
0
        public void EncodeSmallestNative()
        {
            var data    = SampleData[5];
            var encoded = Base32Core.ToBase32String(data);

            Assert.AreEqual(8, encoded.Length);
            Assert.IsFalse(HasCutoff(encoded));
        }
Ejemplo n.º 2
0
        public void Cutoff1Bytes()
        {
            var data    = SampleData[1];
            var encoded = Base32Core.ToBase32String(data);

            Assert.AreEqual(3, encoded.Length);
            Assert.IsTrue(HasCutoff(encoded));
            Assert.IsTrue(Common.IsCutoffCharacter(encoded[1]));
        }
Ejemplo n.º 3
0
        public void CreateSampleData()
        {
            _sampleBytes = new byte[BUFFER_SIZE];

            for (int i = 0; i < BUFFER_SIZE; i++)
            {
                _sampleBytes[i] = (byte)i;
            }

            _sampleString = Base32Core.ToBase32String(_sampleBytes);
        }
Ejemplo n.º 4
0
        public void SingleByteDecode()
        {
            for (int i = 0; i < 256; i++)
            {
                var x = new[] { (byte)i };

                var encoded = Base32Core.ToBase32String(x);
                var decoded = Base32Core.FromBase32String(encoded);

                Assert.IsTrue(x.SequenceEqual(decoded));
            }
        }
Ejemplo n.º 5
0
        private static void SplitStringDecodeTest()
        {
            const int DATA_SIZE     = 13;
            const int FRAGMENT_SIZE = 10;

            byte[] data1 = new byte[DATA_SIZE];

            for (int i = 0; i < DATA_SIZE; i++)
            {
                data1[i] = (byte)i;
            }

            string base32   = Base32Core.ToBase32String(data1) + "a";
            var    length32 = base32.Length;

            var             accumulator = new List <byte>();
            Action <byte[]> handler     = (i) => { foreach (var x in i)
                                                   {
                                                       accumulator.Add(x);
                                                   }
            };

            using (var pipe = new Base32DecodePipe(handler)) {
                var offset = 0;
                while (offset < base32.Length)
                {
                    var length   = Math.Min(FRAGMENT_SIZE, base32.Length - offset);
                    var progress = length + offset;

                    var final = progress == base32.Length;

                    var fragment = base32.Substring(offset, length);
                    pipe.FeedFragment(fragment, final);

                    offset += FRAGMENT_SIZE;
                }
            }

            var data2 = accumulator.ToArray();

            var isok = data2.SequenceEqual(data1);
        }
Ejemplo n.º 6
0
        public void SingleByteEncode()
        {
            for (int i = 0; i < 256; i++)
            {
                var x = (byte)i;

                var low  = x & 0x1f;
                var high = x >> 5;

                var clow  = Base32Core.EncodeTable[low];
                var chigh = Base32Core.EncodeTable[high];

                var encoded = Base32Core.ToBase32String(new[] { x });

                Assert.AreEqual(3, encoded.Length);
                Assert.AreEqual(clow, encoded[0]);
                Assert.AreEqual(chigh, encoded[2]);

                var c = encoded[1];

                Assert.IsTrue((c >= '7' && c <= '9') || c == '0');
            }
        }
        /// <summary>
        /// Illustrates data transformation steps.
        /// </summary>
        /// <remarks>
        /// PREPARE DATA TO TRANSFER
        /// 1. Pack input bytes by Zip.
        /// 2. Encrypt packed bytes with password.
        /// 3. Convert encrypted bytes to confidential string.
        /// TRANSFER CONFIDENTIAL STRING OVER INTERNET.
        /// TRANSFORM TRANSFERRED STRING TO ORIGINAL DATA.
        /// 4. Convert confidential string to encrypted bytes.
        /// 5. Decrypt converted bytes with password.
        /// 6. Unpack decrypted bytes to original data.
        /// </remarks>
        internal static void TransformationModel()
        {
            //TestData.Cleanup();

            const string PASSWORD = "******";

            var my_input =
                File.ReadAllBytes("C:\\1.input");
            //new byte[] { 0x08, 0x00, 0x52 };
            //new byte[] { 0x08, 0x00 };
            //new byte[] { 0x08 };
            //new byte[0];

            var input_size = my_input.Length;

            Console.WriteLine($"Input is {input_size} bytes");

            ////
            //// Step 1: Pack input bytes by Zip.
            ////
            //var my_packed = my_input.Pack();
            //File.WriteAllBytes("C:\\1.packed", my_packed);

            ////
            //// Step 2: Encrypt packed bytes with password.
            ////
            var my_secret = RijndaelEncryptorDecryptor.Encrypt(my_input, PASSWORD);

            File.WriteAllBytes("C:\\1.secret", my_secret);

            string my_confidential = null;

            ////
            //// Step 3: Convert encrypted bytes to confidential string to be transferred.
            ////
            my_confidential = Base32Core.ToBase32String(my_secret);
            File.WriteAllText("C:\\1.confidential", my_confidential);

            ////
            //// TRANSFER CONFIDENTIAL STRING OVER INTERNET.
            //// TRANSFORM TRANSFERRED STRING TO ORIGINAL DATA.
            ////
            var my_transferred = my_confidential; // emulate transfer

            // ReSharper disable once AssignNullToNotNullAttribute
            var transfer_size = Encoding.UTF8.GetBytes(my_transferred).Length;

            Console.WriteLine($"Transfer is {transfer_size} bytes");
            Console.WriteLine($"Sample transfer ratio is {transfer_size / (1.0 * input_size)}");

            ////
            //// Step 4: Convert confidential string to encrypted bytes.
            ////
            var my_secret2 = Base32Core.FromBase32String(my_transferred);

            File.WriteAllBytes("C:\\1.secret2", my_secret2);

            Console.WriteLine($"Confidential conversion OK: {my_secret.SequenceEqual(my_secret2)}");

            ////
            //// Step 5: Decrypt converted bytes with password.
            ////
            var my_output = RijndaelEncryptorDecryptor.Decrypt(my_secret2, PASSWORD);

            ////
            //// Step 6: Unpack decrypted bytes to original data.
            ////
            File.WriteAllBytes("C:\\1.output", my_output);

            Console.WriteLine($"Encrypting/decrypting OK: {my_input.SequenceEqual(my_output)}");
        }
Ejemplo n.º 8
0
        public void EncodeEmpty()
        {
            var encoded = Base32Core.ToBase32String(new byte[0]);

            Assert.AreEqual(String.Empty, encoded);
        }
Ejemplo n.º 9
0
 public void EncodeNull()
 {
     var encoded = Base32Core.ToBase32String(null);
 }