Monday, August 20, 2012

Creating Random Password and Send Mail in C#

1 . Below is methods for Encrypt and Decrypt Data

 public static string EncryptData(string Message)
    {
        byte[] Results;
        System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
        MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
        byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes("hiren"));
        TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
        TDESAlgorithm.Key = TDESKey;
        TDESAlgorithm.Mode = CipherMode.ECB;
        TDESAlgorithm.Padding = PaddingMode.PKCS7;
        byte[] DataToEncrypt = UTF8.GetBytes(Message);
        try
        {
            ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor();
            Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length);
        }
        finally
        {
            TDESAlgorithm.Clear();
            HashProvider.Clear();
        }
        return Convert.ToBase64String(Results);
    }
    public static string DecryptString(string Message)
    {
        byte[] Results;
        System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding();
        MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider();
        byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes("hiren"));
        TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider();
        TDESAlgorithm.Key = TDESKey;
        TDESAlgorithm.Mode = CipherMode.ECB;
        TDESAlgorithm.Padding = PaddingMode.PKCS7;
        byte[] DataToDecrypt = Convert.FromBase64String(Message);
        try
        {
            ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor();
            Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length);
        }
        finally
        {
            TDESAlgorithm.Clear();
            HashProvider.Clear();
        }
        return UTF8.GetString(Results);
    }

2. Now Create Method for Creating New Password

public static string CreateRandomPassword(int passwordLength)
    {
        string allowedChars = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789!@$?_-";
        char[] chars = new char[passwordLength];
        Random rd = new Random();
        for (int i = 0; i < passwordLength; i++)
        {
            chars[i] = allowedChars[rd.Next(0, allowedChars.Length)];
        }
        return new string(chars);
    }

3. Below is method to send newly created password.

 public string SendMail(string toAddress)
        {
            try
            {
                string newpwd =   CreateRandomPassword(7);
                string encrypted = EncryptData(newpwd);
                MailMessage mail = new MailMessage();
                mail.To.Add(toAddress);
                mail.From = new MailAddress(toAddress);
                mail.Subject = "your new  password";
                string Body = "Your new password is : <b>" + newpwd + "</b>";
                mail.Body = Body;
                mail.IsBodyHtml = true;
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";
                smtp.Credentials = new System.Net.NetworkCredential("<Credential User email>","<Credential Password>");
                smtp.EnableSsl = true;
                smtp.Send(mail);

                return "Email Sent";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

Get Return Value From Confirm Box in C# (ASP.Net)

private void Button_click(object sender, EventArgs e)
    {
        var sbConfirm = new StringBuilder();
        string strMessage = string.Format("Are you sure to go ahead.");           
        sbConfirm.AppendFormat("var result = window.confirm('" + strMessage + "');\n");
        sbConfirm.Append("if (result)\n");
        sbConfirm.Append("__doPostBack('ConfirmTarget', result);\n");
        ClientScript.RegisterStartupScript(GetType(), "MyConfirmScript", sbConfirm.ToString(), true);
      
    }


In Page Load you have to write :

protected void Page_Load(object sender, EventArgs e)
    {
        ClientScript.GetPostBackEventReference(this, string.Empty);
         string eventTarget = Request["__EVENTTARGET"] ?? string.Empty;
         string eventArgument = Request["__EVENTARGUMENT"] ?? string.Empty;

            switch (eventTarget)
            {
                case "ConfirmTarget":
                    if (Convert.ToBoolean(eventArgument))
                    {
                          //.....your code
                    }
                    break;
            }
 }