Password encryption/decryption code in .NET

后端 未结 9 1030
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-29 00:37

I want simple encryption and decryption of password in C#. How to save the password in encrypted format in database and retrieve as original format by decryption?

9条回答
  •  春和景丽
    2020-11-29 01:13

    First create a class like:

    public class Encryption
        { 
            public static string Encrypt(string clearText)
            {
                string EncryptionKey = "MAKV2SPBNI99212";
                byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
                using (Aes encryptor = Aes.Create())
                {
                    Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
                    encryptor.Key = pdb.GetBytes(32);
                    encryptor.IV = pdb.GetBytes(16);
                    using (MemoryStream ms = new MemoryStream())
                    {
                        using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                        {
                            cs.Write(clearBytes, 0, clearBytes.Length);
                            cs.Close();
                        }
                        clearText = Convert.ToBase64String(ms.ToArray());
                    }
                }
                return clearText;
            }
    
            public static string Decrypt(string cipherText)
            {
                string EncryptionKey = "MAKV2SPBNI99212";
                byte[] cipherBytes = Convert.FromBase64String(cipherText);
                using (Aes encryptor = Aes.Create())
                {
                    Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
                    encryptor.Key = pdb.GetBytes(32);
                    encryptor.IV = pdb.GetBytes(16);
                    using (MemoryStream ms = new MemoryStream())
                    {
                        using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
                        {
                            cs.Write(cipherBytes, 0, cipherBytes.Length);
                            cs.Close();
                        }
                        cipherText = Encoding.Unicode.GetString(ms.ToArray());
                    }
                }
                return cipherText;
            }
        }
    

    **In Controller **

    add reference for this encryption class:

    using testdemo.Models
    
    public ActionResult Index() {
                return View();
            }
            [HttpPost]
            public ActionResult Index(string text)
            {
                if (Request["txtEncrypt"] != null)
                {
                    string getEncryptionCode = Request["txtEncrypt"];
                    string DecryptCode = Encryption.Decrypt(HttpUtility.UrlDecode(getEncryptionCode));
                    ViewBag.GetDecryptCode = DecryptCode;
                    return View();
                }
                else {
                    string getDecryptCode = Request["txtDecrypt"];
                    string EncryptionCode = HttpUtility.UrlEncode(Encryption.Encrypt(getDecryptCode));
                    ViewBag.GetEncryptionCode = EncryptionCode;
                    return View();
                }
    
            }
    

    In View

    Decryption Code

    @using (Html.BeginForm()) {
    Encryption Code
    @ViewBag.GetDecryptCode
    }


    Encryption Code

    @using (Html.BeginForm()) {
    Decryption Code
    @ViewBag.GetEncryptionCode
    }

提交回复
热议问题