Beispiel #1
0
        public TokenTableSet Generate()
        {
            var tableSet     = new TokenTableSet();
            var forwardTable = new TokenTable();
            var reverseTable = new TokenTable();
            var alphabet     = string.IsNullOrWhiteSpace(_settings.CharacterString) ?
                               _settings.CharacterArray :
                               (_settings.CharacterString + (_settings.IncludeSpaces ? Characters.Space : string.Empty) + (_settings.IncludePunctuation ? Characters.Punctuation : string.Empty) + (_settings.IncludeSpecialCharacters ? Characters.SpecialCharacters : string.Empty)).ToCharArray().ToList();

            if (alphabet.Count == 0)
            {
                throw new ArgumentException("A character set must be supplied.");
            }


            for (var i = 0; i < _settings.Size; i++)
            {
                GenerateRandomColumn(_settings.Size, alphabet, forwardTable, reverseTable);
            }

            tableSet.ForwardTable = forwardTable;
            tableSet.ReverseTable = reverseTable;

            return(tableSet);
        }
        public async Task <List <BasicResult> > TokenizeAsync(List <string> sources, TokenTableSet table)
        {
            var results = new ConcurrentBag <BasicResult>();
            var tasks   = new List <Task>();

            foreach (var source in sources)
            {
                tasks.Add(TokenizeString(table, results, source));
            }
            await Task.WhenAll(tasks);

            return(results.ToList());
        }
 public BasicResult Detokenize(BasicRequest request, TokenTableSet table)
 {
     try
     {
         return(DetokenizeAsync(new List <BasicRequest> {
             request
         }, table).Result[0]);
     }
     catch (Exception ex)
     {
         throw ex.InnerException;
     }
 }
 public BasicResult Tokenize(string source, TokenTableSet table)
 {
     try
     {
         return(TokenizeAsync(new List <string> {
             source
         }, table).Result[0]);
     }
     catch (Exception ex)
     {
         throw ex.InnerException;
     }
 }
        private async Task TokenizeString(TokenTableSet table, ConcurrentBag <BasicResult> results, string source)
        {
            var seeds  = new List <int>();
            var result = new BasicResult {
                Value = source
            };

            result = await Task.Run(() => TokenizeCycle(table, seeds, result));

            result.Action = ActionType.Tokenize;

            result.SourceValue = source;
            Encrypt(seeds, result);
            results.Add(result);
        }
 public BasicClient(ITableGenerator tableGenerator, IBasicService basicService, ISerialisation serialisation, ICompression compression, IEncryption encryption, TokenTableSet tokenTableSet)
 {
     _tableGenerator = tableGenerator;
     _basicService   = basicService;
     _serialisation  = serialisation;
     _compression    = compression;
     _encryption     = encryption;
     if (tokenTableSet == null)
     {
         _tokenTableSet = GenerateTokenTable();
     }
     else
     {
         _tokenTableSet = tokenTableSet;
     }
 }
        private async Task DetokenizeString(TokenTableSet table, ConcurrentBag <BasicResult> results, BasicRequest request)
        {
            Decrypt(request);

            if (request.Seed != null)
            {
                request.Seed.Reverse();
            }
            var result = new BasicResult {
                Value = request.Source
            };

            result = await Task.Run(() => DetokeniseCycle(table, request, result));

            result.Action      = ActionType.Detokenize;
            result.SourceValue = request.Source;
            results.Add(result);
        }
        private BasicResult DetokeniseCycle(TokenTableSet table, BasicRequest request, BasicResult result)
        {
            var seed = -1;

            if (_settings.Behaviour == Behaviour.RandomSeedInconsistent && !_settings.SeedPerCycle)
            {
                seed = request.Seed[0];
            }

            for (int i = 0; i < _settings.Cycles; i++)
            {
                if (_settings.Behaviour == Behaviour.RandomSeedInconsistent && _settings.SeedPerCycle)
                {
                    seed = request.Seed[i];
                }

                result = Encode(result.Value, table.ReverseTable, seed);
            }

            return(result);
        }
        private BasicResult TokenizeCycle(TokenTableSet table, List <int> seeds, BasicResult result)
        {
            var currentSeed = -1;

            if (_settings.Behaviour == Behaviour.RandomSeedInconsistent && !_settings.SeedPerCycle)
            {
                currentSeed = GetSeed(table.ForwardTable.Count);
                seeds.Add(currentSeed);
            }

            for (int i = 0; i < _settings.Cycles; i++)
            {
                if (_settings.Behaviour == Behaviour.RandomSeedInconsistent && _settings.SeedPerCycle)
                {
                    currentSeed = GetSeed(table.ForwardTable.Count);
                    seeds.Add(currentSeed);
                }
                result = Encode(result.Value, table.ForwardTable, currentSeed);
            }

            return(result);
        }
 public BasicClient(IGeneratorSettings generatorSettings, IServiceSettings serviceSettings, TokenTableSet tokenTableSet) : this(new TableGenerator(generatorSettings), new BasicService(serviceSettings, new Encryption(), new Compression()), new Serialisation(), new Compression(), new Encryption(), tokenTableSet)
 {
 }
        public async Task <List <BasicResult> > DetokenizeAsync(List <BasicRequest> requests, TokenTableSet table)
        {
            var results = new ConcurrentBag <BasicResult>();
            var tasks   = new List <Task>();

            foreach (var request in requests)
            {
                tasks.Add(DetokenizeString(table, results, request));
            }
            await Task.WhenAll(tasks);

            return(results.ToList());
        }