hMailServer.Administrator.Utilities.Encryption.Decrypt C# (CSharp) Method

Decrypt() public static method

public static Decrypt ( string encryptedText ) : string
encryptedText string
return string
        public static string Decrypt(string encryptedText)
        {
            // Encryption operates on byte arrays, not on strings.
            byte[] cipherBytes = Convert.FromBase64String(encryptedText);

            // Derive a key from the password.
            PasswordDeriveBytes pdb = new PasswordDeriveBytes(NOT_SECRET_KEY,
                new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });

            // Use Rijndael symmetric algorithm to do the decryption.
            Rijndael rijndaelAlgorithm = Rijndael.Create();
            rijndaelAlgorithm.Key = pdb.GetBytes(32);
            rijndaelAlgorithm.IV = pdb.GetBytes(16);

            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelAlgorithm.CreateDecryptor(), CryptoStreamMode.Write);
            cryptoStream.Write(cipherBytes, 0, cipherBytes.Length);
            cryptoStream.Close();

            byte[] decryptedData = memoryStream.ToArray();

            return System.Text.Encoding.Unicode.GetString(decryptedData);
        }

Usage Example

コード例 #1
0
ファイル: APICreator.cs プロジェクト: radtek/hMailServer
        public static bool Authenticate(hMailServer.Application app, Settings.Server server)
        {
            string password = server.encryptedPassword;

            if (password.Length > 0)
            {
                password = Encryption.Decrypt(password);
            }

            bool wrongPassword = false;

            while (true)
            {
                if (!server.savePassword || wrongPassword)
                {
                    // The user must input the password.
                    formEnterPassword dlg = new formEnterPassword();
                    if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.Cancel)
                    {
                        return(false);
                    }

                    password = dlg.Password;
                }

                try
                {
                    hMailServer.Account account = app.Authenticate(server.userName, password);

                    if (account == null)
                    {
                        // Wrong password, try again.
                        MessageBox.Show("The specified user name or password is incorrect.", EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK);

                        wrongPassword = true;
                    }
                    else
                    {
                        try
                        {
                            if (account.AdminLevel != eAdminLevel.hAdminLevelServerAdmin)
                            {
                                // Wrong password, try again.
                                MessageBox.Show("hMailServer server administration rights are required to run hMailServer Administrator.", EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK, MessageBoxIcon.Warning);

                                return(false);
                            }
                            return(true);
                        }
                        finally
                        {
                            Marshal.ReleaseComObject(account);
                        }
                    }
                }
                catch (Exception e)
                {
                    // Wrong password, try again.
                    MessageBox.Show("The specified user name or password is incorrect." + Environment.NewLine + e.Message, EnumStrings.hMailServerAdministrator, MessageBoxButtons.OK);

                    wrongPassword = true;
                }
            }
        }