TransWikia.com

C# Criptografia de senhas

Stack Overflow em Português Asked by Eric Jhon on November 30, 2020

Preciso salvar senhas de acesso dos usuários de um sistema no banco de dados e pensei em usar os códigos abaixo para criptografar as senhas usando as próprias senhas como chave. A verificação da senha seria feita criptografando a senha inserida no form de login e comparando o resultado com a senha criptografada salva no banco de dados.

Criptografar:

            public static string Criptografar(string entrada, string chave)
        {
            TripleDESCryptoServiceProvider tripledescryptoserviceprovider = new TripleDESCryptoServiceProvider();
            MD5CryptoServiceProvider md5cryptoserviceprovider = new MD5CryptoServiceProvider();
            try
            {
                if ((entrada.Trim() != ""))
                {
                    // Aqui vc inclui uma chave qualquer para servir de base para cifrar, que deve ser a mesma no m�todo Decodificar
                    tripledescryptoserviceprovider.Key = md5cryptoserviceprovider.ComputeHash(Encoding.Default.GetBytes(chave));
                    tripledescryptoserviceprovider.Mode = CipherMode.ECB;
                    ICryptoTransform desdencrypt = tripledescryptoserviceprovider.CreateEncryptor();
                    byte[] buff = Encoding.Default.GetBytes(entrada);
                    return Convert.ToBase64String(desdencrypt.TransformFinalBlock(buff, 0, buff.Length));
                }
                else
                    return "";
            }
            catch (Exception ex)
            {
                // MsgBox(exception.Message, MsgBoxStyle.Exclamation)
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                tripledescryptoserviceprovider = null/* TODO Change to default(_) if this is not a reference type */;
                md5cryptoserviceprovider = null/* TODO Change to default(_) if this is not a reference type */;
            }
        }

Descriptografar:

            public static string Descriptografar(string entrada, string chave)
        {
            TripleDESCryptoServiceProvider tripledescryptoserviceprovider = new TripleDESCryptoServiceProvider();
            MD5CryptoServiceProvider md5cryptoserviceprovider = new MD5CryptoServiceProvider();
            try
            {
                if ((entrada.Trim() != ""))
                {
                    tripledescryptoserviceprovider.Key = md5cryptoserviceprovider.ComputeHash(Encoding.Default.GetBytes(chave));
                    tripledescryptoserviceprovider.Mode = CipherMode.ECB;
                    ICryptoTransform desdencrypt = tripledescryptoserviceprovider.CreateDecryptor();
                    byte[] buff = Convert.FromBase64String(entrada);
                    return Encoding.Default.GetString(desdencrypt.TransformFinalBlock(buff, 0, buff.Length));
                }
                else
                    return "";
            }
            catch (Exception ex)
            {
                // MsgBox(exception.Message, MsgBoxStyle.Exclamation)
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                tripledescryptoserviceprovider = null/* TODO Change to default(_) if this is not a reference type */;
                md5cryptoserviceprovider = null/* TODO Change to default(_) if this is not a reference type */;
            }
        }

Gostaria de saber o que acham desse método e se tiverem melhores sugestões, agradeço.

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP