public Task <bool> GetUserAccount(string encryptedString)
        {
            if (encryptedString == null)
            {
                throw new ArgumentNullException("Encrypted string with account credentials is null!");
            }
            if (String.IsNullOrEmpty(encryptedString.Trim()))
            {
                throw new NotSupportedException("This type of encrypted string not supported!");
            }
            var decryptedString = AccountEncryptionToBase64.Decode(encryptedString);
            var splittedString  = decryptedString.Split(':');

            return(Task.FromResult(_accounts.Values.Any(account =>
                                                        account.Login == splittedString[0] && account.Password == splittedString[1])));
        }
        public async Task <string> RegisterAsync(string login, string password)
        {
            var release = await _semaphore.WaitAsync(1000);

            try
            {
                var id           = _accounts.Count + 1;
                var encryptedKey = (AccountEncryptionToBase64.Encode($"{login}:{password}"));
                if (_accounts.Any(account => account.Value.Login == login))
                {
                    throw new ArgumentException("Account with this login already exists");
                }
                _accounts.TryAdd(encryptedKey, new Account(id, login, password));
                return(encryptedKey);
            }
            finally
            {
                if (release)
                {
                    _semaphore.Release();
                }
            }
        }