public void TestRemoveDummyCharacters()
        {
            var validCharacterSet = Settings.ValidCharacterSet;
            var dummyCharacters   = Settings.DummyCharacterSet;

            // Combine input values, which should contain both valid/invalid characters.
            int minLength = Math.Min(dummyCharacters.Length, validCharacterSet.Count);

            var sb = new StringBuilder();

            for (int i = 0; i < minLength; i++)
            {
                // Append valid/invalid characters in alternating sequence.
                sb.AppendFormat("{0}{1}", validCharacterSet.GetFromKey(i), dummyCharacters[i]);
            }

            string input = sb.ToString();

            // Perform operation under test.
            var obfuscator = ObfuscatorFactory.NewInstance;
            var testResult = ObfuscatorHelper.RemoveDummyCharacters(input);

            // Ensure resulting string doesn't contain any dummy characters.
            Assert.True(testResult.All(x => !dummyCharacters.Contains(x)));
        }
Пример #2
0
        /// <summary>
        ///     Deobfuscate an obfuscated string back to number.
        /// </summary>
        /// <param name="value">
        ///     The obfuscated string to deobfuscate.
        /// </param>
        /// <returns>
        ///     The number represented by the obfuscated string specified.
        /// </returns>
        public string Deobfuscate(string value)
        {
            var valueWithoutDummyCharacters = ObfuscatorHelper.RemoveDummyCharacters(value);

            // return AnyBaseConvert.ConvertFromBase(valueWithoutDummyCharacters);
            return(AnyBaseConvert.Convert(valueWithoutDummyCharacters, AnyBaseConvert.BaseCharSet.Base66_Url_Safe_Custom, AnyBaseConvert.BaseCharSet.Base10));
        }
Пример #3
0
        /// <summary>
        ///     Obfuscate the specified number.
        /// </summary>
        /// <param name="value">
        ///     Non-negative integer to obfuscate.
        /// </param>
        /// <returns>
        ///     The obfuscated string of the specified number.
        /// </returns>
        public string Obfuscate(int value)
        {
            if (value < 0)
            {
                throw new InvalidOperationException("Negative values are not supported.");
            }

            var baseValue = BaseConverter.ConvertToBase(value);

            return(ObfuscatorHelper.AddDummyCharacters(baseValue, Strategy, Seed));
        }
Пример #4
0
        /// <summary>
        ///     Obfuscate the specified number.
        /// </summary>
        /// <param name="value">
        ///     Non-negative integer to obfuscate.
        /// </param>
        /// <returns>
        ///     The obfuscated string of the specified number.
        /// </returns>
        public string Obfuscate(Int64 value)
        {
            /*if (value < 0)
             *  throw new InvalidOperationException("Negative values are not supported.");*/

            // var baseValue =  AnyBaseConvert.ConvertToBase(value);
            var baseValue = AnyBaseConvert.Convert(value.ToString(), AnyBaseConvert.BaseCharSet.Base10,
                                                   AnyBaseConvert.BaseCharSet.Base66_Url_Safe_Custom);

            return(ObfuscatorHelper.AddDummyCharacters(baseValue, Strategy, Seed));
        }
        public void TestAddDummyCharacters(ObfuscationStrategy strategy)
        {
            var validCharacters = Settings.ValidCharacterSet;
            var dummyCharacters = Settings.DummyCharacterSet;

            // Generate valid input by taking first 3 characters of validCharacters.
            string validInput = new string(validCharacters.Dictionary.Select(x => x.Value).Take(3).ToArray());

            /* Perform operation under test with constant strategy, */
            var obfuscator = ObfuscatorFactory.NewInstance;
            int seed       = obfuscator.Seed;
            var testResult = ObfuscatorHelper.AddDummyCharacters(validInput, strategy, seed);

            // Remove all valid characters from result.
            var dummyResult = testResult.ToCharArray().ToList();

            dummyResult.RemoveAll(x => validCharacters.ContainsValue(x));

            // Ensure result only contains dummy characters.
            Assert.True(dummyResult.All(x => dummyCharacters.Contains(x)));
        }
Пример #6
0
        /// <summary>
        ///     Deobfuscate an obfuscated string back to number.
        /// </summary>
        /// <param name="value">
        ///     The obfuscated string to deobfuscate.
        /// </param>
        /// <returns>
        ///     The number represented by the obfuscated string specified.
        /// </returns>
        public int Deobfuscate(string value)
        {
            var valueWithoutDummyCharacters = ObfuscatorHelper.RemoveDummyCharacters(value);

            return(BaseConverter.ConvertFromBase(valueWithoutDummyCharacters));
        }