Пример #1
0
 private void button3_Click(object sender, EventArgs e)
 {
     using (OpenFileDialog ofd = new OpenFileDialog()
     {
         Filter = "xml|*.xml"
     }) {
         if (ofd.ShowDialog() == DialogResult.Cancel)
         {
             return;
         }
         try {
             var rsa = new advRSA();
             using (var sr = new StreamReader(ofd.FileName))
                 rsa.FromXmlString(sr.ReadToEnd());
             txtE.Text = rsa.E.ToString();
             txtD.Text = rsa.D.ToString();
             txtN.Text = rsa.N.ToString();
         } catch (FileNotFoundException) {
             MessageBox.Show("File not found.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         catch (Exception ex) {
             MessageBox.Show("File is incorrect.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             ex.Log();
         }
     }
 }
Пример #2
0
 public virtual void SaveRSA(advRSA rsa)
 {
     using (MemoryStream MemStream = new MemoryStream()) {
         short head = (short)(rsa.N.GetByteCount() / 4 - 32);
         if (head > 127)
         {
             throw new Exception("N is too big.");
         }
         head |= (short)(rsa.E.GetByteCount() << 8);
         head |= 0x80; // RSA flag
         MemStream.Write(BitConverter.GetBytes(head), 0, 2);
         byte[] data = GetSaveData();
         var    hash = SHA512.Create().ComputeHash(data);
         hash = rsa.GetSignature(hash);
         MemStream.Write(BitConverter.GetBytes((short)(hash.Length)), 0, 2);
         var key = rsa.N.ToByteArray();
         MemStream.Write(key, 0, key.Length);
         key = rsa.E.ToByteArray();
         MemStream.Write(key, 0, key.Length);
         MemStream.Write(hash, 0, hash.Length);
         MemStream.Write(data, 0, data.Length);
         MemStream.Seek(0, SeekOrigin.Begin);
         using (FileStream fs = new FileStream(FileName, FileMode.Create)) {
             using (GZipStream ZipStream = new GZipStream(fs, CompressionMode.Compress)) {
                 MemStream.CopyTo(ZipStream);
             }
         }
     }
 }
Пример #3
0
 public static DialogResult GetKeys(ref advRSA rsa)
 {
     using (var frm = new frmKeyDialog()) {
         frm.ShowDialog();
         if (frm.result == DialogResult.OK)
         {
             rsa.E = BigInteger.Parse(frm.txtE.Text);
             rsa.D = BigInteger.Parse(frm.txtD.Text);
             rsa.N = BigInteger.Parse(frm.txtN.Text);
         }
         return(frm.result);
     }
 }