public void clearResultText() { if (String.IsNullOrEmpty(resultText)) { BytesBuilder.ClearString(resultText); } }
public void recordsToFile() { StringBuilder sb = new StringBuilder(); foreach (var record in records) { sb.AppendLine(record.Value.mainTag); sb.AppendLine(record.Value.crypt); sb.AppendLine(record.Value.pwd); foreach (var tag in record.Value.tags) { sb.AppendLine(tag); } sb.AppendLine(); } var content = sb.ToString(); sb.Clear(); var curKey = key.getObjectValue(); var sha = new SHA3(content.Length); var bytes = sha.multiCryptLZMA(new UTF32Encoding().GetBytes(content), curKey, null, 22, false, 0, SHA3.getHashCountForMultiHash() - 8); File.WriteAllBytes(fileName, bytes); BytesBuilder.ClearString(content); BytesBuilder.ToNull(curKey); BytesBuilder.ToNull(bytes); }
public void clear(bool notTagsClear = false) { BytesBuilder.ClearString(mainTag); BytesBuilder.ClearString(pwd); BytesBuilder.ClearString(crypt); if (!notTagsClear) { foreach (var tag in tags) { BytesBuilder.ClearString(tag); } tags.Clear(); } }
public string crypt(string str, PasswordSecure pwd = null) { if (pwd == null) { pwd = key; } var sha = new SHA3(str.Length); if (random == null) { var inits = str + DateTime.Now.ToString("r"); var t = new UTF32Encoding().GetBytes(inits); var bbi = new BytesBuilder(); bbi.add(t); bbi.add(sha.CreateInitVector(0, 64, 40)); var init = bbi.getBytes(); random = new SHA3.SHA3Random(init); bbi.clear(); BytesBuilder.ClearString(inits); BytesBuilder.ToNull(init); } var bytes = new UTF32Encoding().GetBytes(str); var openKey = pwd.getObjectValue(); var crypted = sha.multiCryptLZMA(bytes, openKey, null, 22, false); BytesBuilder.BytesToNull(openKey); BytesBuilder.BytesToNull(bytes); BytesBuilder.ClearString(str); return(Convert.ToBase64String(crypted)); }
void cnt_closedEventDecrypt(Form1.OpenFileDialogContext context, bool isOK) { if (!isOK) { return; } toStart: DoublePasswordForm pwdForm1, pwdForm2 = null; bool isSuccess = false; do { pwdForm1 = new DoublePasswordForm(1, Path.GetFileName(context.dialog.FileName)); pwdForm1.ShowDialog(); if (pwdForm1.resultText == null) { return; } if (pwdForm1.resultText.Length < 6) { MessageBox.Show("Извините, но введённый текст настолько мал, что не может являться паролем", "Шифрование", MessageBoxButtons.OK, MessageBoxIcon.Stop); continue; } if (pwdForm1.fromFile) { break; } pwdForm2 = new DoublePasswordForm(2, Path.GetFileName(context.dialog.FileName)); pwdForm2.ShowDialog(); if (pwdForm2.cancel) { pwdForm1.clearResultText(); return; } if (!String.IsNullOrEmpty(pwdForm2.resultText) && pwdForm1.resultText != pwdForm2.resultText) { pwdForm1.clearResultText(); pwdForm2.clearResultText(); if (MessageBox.Show("Введённые пароли не равны друг другу\r\nХотите попробовать ещё раз?", "Шифрование", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes) { return; } } else { isSuccess = true; } }while (!isSuccess); ClearKey(); ClearWindow(); byte[] key1; Form1.GetKeyByPassword(pwdForm1, out key1, 22); pwdForm1.clearResultText(); pwdForm2.clearResultText(); var sha = new SHA3(0); var fi = new FileInfo(context.dialog.FileName); fileName = fi.FullName; if (!fi.Exists) { var newBytes = sha.multiCryptLZMA(new byte[0], key1, null, 12, false, 0, SHA3.getHashCountForMultiHash() - 8); File.WriteAllBytes(fileName, newBytes); } try { var openFile = File.ReadAllBytes(fileName); var decryptedFile = sha.multiDecryptLZMA(openFile, key1); if (decryptedFile == null) { MessageBox.Show("Файл расшифровать не удалось"); BytesBuilder.BytesToNull(key1); goto toStart; } this.key = new PasswordSecure(key1); var str = Encoding.UTF32.GetString(decryptedFile); BytesBuilder.ToNull(openFile); BytesBuilder.ToNull(decryptedFile); GetRecordsFromFile(str); BytesBuilder.ClearString(str); } catch (Exception e) { MessageBox.Show("Расшифрование не удалось! " + e.Message, "Расшифрование не удалось", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } SetTagsAndMainTags(); }
private void FormCrypt_FormClosed(object sender, FormClosedEventArgs e) { BytesBuilder.ToNull(key); BytesBuilder.ClearString(FileName); }