コード例 #1
0
        static void Main(string[] args)
        {
            var    password = "******";
            string encryptedPassword;
            var    symmetricProvider  = SymmetricProvider.AES; // an enum with the options of AES,DES,RC2,Rijndael,TripleDES
            var    symmetricAlgorithm = SymmetricFactory.Create(symmetricProvider);

            using (symmetricAlgorithm)
            {
                var passwordStream = new MemoryStream();
                var cryptoStream   = new CryptoStream(passwordStream, symmetricAlgorithm.CreateEncryptor(), CryptoStreamMode.Write);
                new MemoryStream(Encoding.UTF8.GetBytes(password)).CopyTo(cryptoStream);
                cryptoStream.FlushFinalBlock();
                passwordStream.Seek(0, SeekOrigin.Begin);
                encryptedPassword = new StreamReader(passwordStream).ReadToEnd();


                string passwordButDecrypted;
                passwordStream.Seek(0, SeekOrigin.Begin);
                using (var decryptorStream = new CryptoStream(passwordStream, symmetricAlgorithm.CreateDecryptor(), CryptoStreamMode.Read))
                {
                    passwordButDecrypted = new StreamReader(decryptorStream).ReadToEnd();
                }
            }

            //var passwordAsBytes = Encoding.UTF8.GetBytes("password");
            //var hashAlgorithm = HashingFactory.Create(HashProvider.SHA256);
            //var hashValue = hashAlgorithm.ComputeHash(new MemoryStream(passwordAsBytes));
            //var b = SHA256.Create().ComputeHash(new MemoryStream(passwordAsBytes));
            //var c = SHA256Managed.Create().ComputeHash(new MemoryStream(passwordAsBytes));
            //var d = SHA256Cng.Create().ComputeHash(new MemoryStream(passwordAsBytes));
            //var e = SHA256CryptoServiceProvider.Create().ComputeHash(new MemoryStream(passwordAsBytes));

            //var a2 = Encoding.UTF8.GetString(a);
            //var b2 = Encoding.UTF8.GetString(b);
            //var c2 = Encoding.UTF8.GetString(c);
            //var d2 = Encoding.UTF8.GetString(d);
            //var e2 = Encoding.UTF8.GetString(e);


            //Console.WriteLine(a2);
            //Console.WriteLine(b2);
            //Console.WriteLine(c2);
            //Console.WriteLine(d2);
            //Console.WriteLine(e2);


            //var hashValueAsBytes = hashAlgorithm.ComputeHash(passwordAsStream);
            // var hashValueAsString = Encoding.UTF8.GetString(hashValueAsBytes);
            // Console.WriteLine(hashValueAsString);
        }
コード例 #2
0
        private async void btnDecrypt_Click(object sender, EventArgs e)
        {
            UseWaitCursor    = true;
            tlpMain.Enabled  = false;
            pbProgress.Value = 0;

            string tmpFile = tbFilename.Text + ".tmp";

            try
            {
                using var mre = new ManualResetEvent(false);
                var key = new Key(tbPassword.Text);
                var alg = SymmetricFactory.CreateAES();
                IProgress <KryptoProgress> prog = new Progress <KryptoProgress>(p =>
                {
                    pbProgress.Value = (int)Math.Floor(p.Percent * 100);
                    if (p.Done)
                    {
                        mre.Set();
                    }
                });
                await alg.DecryptFileAsync(key, tbFilename.Text, tmpFile, prog);

                File.Move(tmpFile, tbFilename.Text, true);
                await mre.WaitOneAsync();

                MessageBox.Show("File Decrypted", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (AggregateException ex)
            {
                ShowErrors(ex.InnerExceptions);
            }
            catch (Exception ex)
            {
                ShowErrors(new Exception[] { ex });
            }
            finally
            {
                if (File.Exists(tmpFile))
                {
                    try { File.Delete(tmpFile); }
                    catch { }
                }
            }

            UseWaitCursor   = false;
            tlpMain.Enabled = true;
        }