示例#1
0
        private async void generatePwdBtn_Click(object sender, RoutedEventArgs e)
        {
            bool ovd     = overrideIterCheck.IsChecked ?? false;
            int  numiter = 0;

            if (ovd)
            {
                bool fixedIter = iterChoiceFixed.IsChecked ?? false;
                if (fixedIter)
                {
                    if (!Int32.TryParse(numIterBox.Text, out numiter))
                    {
                        await this.ShowMessage("Error", "Invalid number of iterations. Check your input.");

                        return;
                    }
                }
                else
                {
                    int index = iterFieldCombo.SelectedIndex;
                    numiter = fieldValues[index].Length;
                }
            }
            else
            {
                switch (manager.CurrentScheme.TimeToHashType)
                {
                case SPMSchemeTimeToHashType.FIXED:
                    numiter = manager.CurrentScheme.TimeToHashParam;
                    break;

                case SPMSchemeTimeToHashType.FROM_FIELD:
                    int index = manager.CurrentScheme.TimeToHashParam;
                    if (index < this.fieldValues.Count)
                    {
                        numiter = fieldValues[index].Length;
                    }
                    else
                    {
                        numiter = 0;
                    }
                    break;
                }
            }

            if (numiter < 1 || numiter > 1000)
            {
                await this.ShowMessage("Error", "Number of iterations out of range: [1, 1000].");

                return;
            }

            PasswordGenerator gen    = HashingFactory.GetPwdGenerator(manager.CurrentScheme, fieldValues, true, (SPMSchemeProcessType)procCombo.SelectedItem);
            string            secret = await this.PromptForSecret("Secret", "Make sure no one else is looking and type your secret:");

            lastGeneratedPwd = gen.GeneratePassword(secret, numiter);

            SetupPwdText();
        }
示例#2
0
 public static string GetCRC(Stream stream, bool disposeStream)
 {
     if (disposeStream)
     {
         using (stream)
         {
             var hash  = string.Empty;
             var bytes = HashingFactory.Create(HashProvider.CRC32).ComputeHash(stream);
             hash = bytes.Aggregate(hash, (current, b) => current + b.ToString("x2").ToLower());
             return(hash);
         }
     }
     else
     {
         var hash  = string.Empty;
         var bytes = HashingFactory.Create(HashProvider.CRC32).ComputeHash(stream);
         hash = bytes.Aggregate(hash, (current, b) => current + b.ToString("x2").ToLower());
         return(hash);
     }
 }