private bool TestPassword(string psw) { _ms.Position = 0; var response = Crypter.Decrypt(VocabularyProviderFactory.CreateProvider(psw), _ms); return(response.Contains("parter")); }
private void LoadFile() { var stream = ContentResolver.OpenInputStream(ContentReference); if (DecryptRadioButton.Checked) { const int MEGABYTE = 1024 * 1024; var tempBuffers = new List <byte[]>(); int totalRead = 0; int read; //read all into memory do { var tempBuffer = new byte[MEGABYTE]; read = stream.Read(tempBuffer, 0, MEGABYTE); if (read > 0) { totalRead += read; tempBuffers.Add(tempBuffer); } } while (read == MEGABYTE); //assemble back into one buffer var buffer = new byte[totalRead]; for (int i = 0; i < tempBuffers.Count; i++) { Array.Copy(tempBuffers[i], 0, buffer, i * MEGABYTE, i == tempBuffers.Count - 1 ? totalRead % MEGABYTE : MEGABYTE); } //decrypt string decoded; using (var wrapper = new MemoryStream(buffer)) { decoded = Crypter.Decrypt(VocabularyProviderFactory.CreateProvider(PasswordBox.Text), wrapper); } //replace tabs with tab stops var builder = new StringBuilder(); int counter = 0; for (int i = 0; i < decoded.Length; i++) { switch (decoded[i]) { case '\r': case '\n': counter = 0; builder.Append(decoded[i]); break; case '\t': var delta = 8 - (counter % 8); counter += delta; builder.Append(' ', delta); break; default: counter++; builder.Append(decoded[i]); break; } } //set content ContentViewer.Text = builder.ToString(); } else { using (var istr = new StreamReader(stream)) { ContentViewer.Text = istr.ReadToEnd(); } } SettingsGrid.Visibility = ViewStates.Gone; ContentViewer.Visibility = ViewStates.Visible; }