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))); }
/// <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)); }
/// <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)); }
/// <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))); }
/// <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)); }