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