Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pedroalves

Incriptação em C#

Recommended Posts

como faço incriptação em c#

queria para incriptar os dados e para ler os dados incriptados

segue o codigo do login

 MySqlConnection con = new MySqlConnection("host=localhost;user=root;database=login");

           MySqlCommand cmd = new MySqlCommand("SELECT Tipo FROM user WHERE username  = '" + Userbox.Text + "' AND password = '" + Passwordbox.Text + "' ");
           cmd.Connection = con;
           con.Open();
           object Tipo = cmd.ExecuteScalar();
           //MySqlDataReader reader=cmd.ExecuteReader();
           if (Tipo != null && Tipo != DBNull.Value)
           {
               if (Tipo.ToString() == "1")
               {
                   this.Dispose();
                   Serverlist frm = new Serverlist();
                   frm.Show();

               }
               else if (Tipo.ToString() == "2")
               {
                   MessageBox.Show("GAME MASTER");
               }
               else if (Tipo.ToString() == "3")
               {
                   MessageBox.Show("VIP");
               }
               else if (Tipo.ToString() == "4")
               {
                   MessageBox.Show("Membro");
               }
               else if (Tipo.ToString() == "5")
               {
                   MessageBox.Show("Registo nao foi Activado");
               }
               else if (Tipo.ToString() == "6")
               {
                   MessageBox.Show("O Utilizador foi banido\n Contacte atravez do suporte para saber a razão pelo qual foi banido(a)");
               }
           }
           else
           {
               MessageBox.Show("Usuario ou Senha incorretos");



           }
       }

Compartilhar este post


Link para o post
Compartilhar em outros sites

 static void Main(string[] args)
       {
           string source = "Hello World!";
           using (MD5 md5Hash = MD5.Create())
           {
               string hash = GetMd5Hash(md5Hash, source);

               Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");

               Console.WriteLine("Verifying the hash...");

               if (VerifyMd5Hash(md5Hash, source, hash))
               {
                   Console.WriteLine("The hashes are the same.");
               }
               else
               {
                   Console.WriteLine("The hashes are not same.");
               }
           }



       }
       static string GetMd5Hash(MD5 md5Hash, string input)
       {

           // Convert the input string to a byte array and compute the hash.
           byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

           // Create a new Stringbuilder to collect the bytes
           // and create a string.
           StringBuilder sBuilder = new StringBuilder();

           // Loop through each byte of the hashed data 
           // and format each one as a hexadecimal string.
           for (int i = 0; i < data.Length; i++)
           {
               sBuilder.Append(data[i].ToString("x2"));
           }

           // Return the hexadecimal string.
           return sBuilder.ToString();
       }

       // Verify a hash against a string.
       static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)
       {
           // Hash the input.
           string hashOfInput = GetMd5Hash(md5Hash, input);

           // Create a StringComparer an compare the hashes.
           StringComparer comparer = StringComparer.OrdinalIgnoreCase;

           if (0 == comparer.Compare(hashOfInput, hash))
           {
               return true;
           }
           else
           {
               return false;
           }
       }

não estou a conseguir implementar este codigo no meu projeto

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao estou a conseguir por no string

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Security.Cryptography;

namespace FirstGame
{
   public partial class Login : Form
   {

       public Login()
       {

           InitializeComponent();
       }
       static void incript(string[] args)
       {
           string source = "Hello World!";// aqui devia ir boxcar os dados da textbox
           using (MD5 md5Hash = MD5.Create())
           {
               string hash = GetMd5Hash(md5Hash, source);

               Console.WriteLine("The MD5 hash of " + source + " is: " + hash + ".");

               Console.WriteLine("Verifying the hash...");

               if (VerifyMd5Hash(md5Hash, source, hash))
               {
                   Console.WriteLine("The hashes are the same.");
               }
               else
               {
                   Console.WriteLine("The hashes are not same.");
               }
           }



       }
       static string GetMd5Hash(MD5 md5Hash, string input)
       {

           // Convert the input string to a byte array and compute the hash.
           byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));

           // Create a new Stringbuilder to collect the bytes
           // and create a string.
           StringBuilder sBuilder = new StringBuilder();

           // Loop through each byte of the hashed data 
           // and format each one as a hexadecimal string.
           for (int i = 0; i < data.Length; i++)
           {
               sBuilder.Append(data[i].ToString("x2"));
           }

           // Return the hexadecimal string.
           return sBuilder.ToString();
       }

       // Verify a hash against a string.
       static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)
       {
           // Hash the input.
           string hashOfInput = GetMd5Hash(md5Hash, input);

           // Create a StringComparer an compare the hashes.
           StringComparer comparer = StringComparer.OrdinalIgnoreCase;

           if (0 == comparer.Compare(hashOfInput, hash))
           {
               return true;
           }
           else
           {
               return false;
           }
       }
       private void button1_Click(object sender, EventArgs e)
       {

           MySqlConnection con = new MySqlConnection("host=localhost;user=root;database=login");

           MySqlCommand cmd = new MySqlCommand("SELECT Tipo FROM user WHERE username  = '" + Userbox.Text + "' AND password = '" + Passwordbox.Text + "' ");
           cmd.Connection = con;
           con.Open();
           object Tipo = cmd.ExecuteScalar();

           if (Tipo != null && Tipo != DBNull.Value)
           {
               if (Tipo.ToString() == "1")
               {
                   this.Dispose();
                   Serverlist frm = new Serverlist();
                   frm.Show();

               }
               else if (Tipo.ToString() == "2")
               {
                   MessageBox.Show("GAME MASTER");
                   Passwordbox.Text = null;
                   Userbox.Text = null;
               }
               else if (Tipo.ToString() == "3")
               {
                   MessageBox.Show("VIP");
                   Passwordbox.Text = null;
                   Userbox.Text = null;
               }
               else if (Tipo.ToString() == "4")
               {
                   MessageBox.Show("Membro");
                   Passwordbox.Text = null;
                   Userbox.Text = null;
               }
               else if (Tipo.ToString() == "5")
               {
                   MessageBox.Show("Registo nao foi Activado");
                   Passwordbox.Text = null;
                   Userbox.Text = null;
               }
               else if (Tipo.ToString() == "6")
               {
                   MessageBox.Show("O Utilizador foi banido\n Contacte a Equipa atravez do suporte para saber a razão pelo qual foi banido(a)");
                   Passwordbox.Text = null;
                   Userbox.Text = null;
               }
           }
           else
           {
               MessageBox.Show("Usuario ou Senha incorretos");
               Passwordbox.Text = null;
               Userbox.Text = null;


           }
       }
       private void button3_Click(object sender, EventArgs e)
       {
           Application.Exit();
       }
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não costumo trabalhar com banco de dados mais tenho algumas observações.

 

if (Tipo.ToString() == "1")
{
   this.Dispose();
   Serverlist frm = new Serverlist();
   frm.Show();

}
else if (Tipo.ToString() == "2")
{
   MessageBox.Show("GAME MASTER");
   Passwordbox.Text = null;
   Userbox.Text = null;
}
else if (Tipo.ToString() == "3")
{
   MessageBox.Show("VIP");
   Passwordbox.Text = null;
   Userbox.Text = null;
}
else if (Tipo.ToString() == "4")
{
   MessageBox.Show("Membro");
   Passwordbox.Text = null;
   Userbox.Text = null;
}
else if (Tipo.ToString() == "5")
{
   MessageBox.Show("Registo nao foi Activado");
   Passwordbox.Text = null;
   Userbox.Text = null;
}
else if (Tipo.ToString() == "6")
{
   MessageBox.Show("O Utilizador foi banido\n Contacte a Equipa atravez do suporte para saber a razão pelo qual foi banido(a)");
   Passwordbox.Text = null;
   Userbox.Text = null;
}

Esse if else if poderia ser trocado por um switch e tratado como inteiro que seria mais eficaz.

 

switch (System.Convert.ToInt32(Tipo))
{
   case 1:
  	this.Dispose();
   	Serverlist frm = new Serverlist();
   	frm.Show();
   	break;
   case 2:
   	MessageBox.Show("GAME MASTER");
break;
   case 3:
   	MessageBox.Show("VIP");
break;
   case 4:
   	MessageBox.Show("Membro");
break;
   case 5:
   	MessageBox.Show("Registo nao foi Activado");
break;
   case 6:
   	MessageBox.Show("O Utilizador foi banido\n Contacte a Equipa atravez do suporte para saber a razão pelo qual foi banido(a)");
break;
}

Passwordbox.Text = null;
Userbox.Text = null;

 

 

Também existe uma vulnerabilidade de SQLInjection no seu código.

MySqlCommand cmd = new MySqlCommand("SELECT Tipo FROM user WHERE username  = '" + Userbox.Text + "' AND password = '" + Passwordbox.Text + "' ");

Faça o tratamento da entrada do usuário antes para evitar isso.

MySqlCommand cmd = new MySqlCommand("SELECT Tipo FROM user WHERE username  = '" + Userbox.Text.Replace("'", "") + "' AND password = '" + Passwordbox.Text.Replace("'", "") + "' ");

Isso não é nem de longe a abordagem ideal eu sinceramente nem recomendo que você a use, aconselho seriamente você fazer o tratamento separadamente, mais ela já resolve parcialmente o problema de SQLInjection com strings, deixo a para você o trabalho de criar uma solução melhor.

 

 

Agora sobre a criptografia eu acho que até entendi o que você quer fazer, só que eu não vejo o que pode ser tratado com ela nesse código.

Olhando mais atentamente o seu código parece que você quer usar com os dados do usuário se eu entendi então você teria que ter os dados retornados do banco de dados já em MD5 se não de nada valeria isso, se não me engano á como configurar o banco de dados para isso.

 

Me avise caso a intenção seja outra, de qualquer forma aguardo uma resposta.

 

 

Uma ultima observação é não me leve á mal mais é encriptação não incriptação pode parecer grosseiro da minha parte lhe corrigir mais não é essa minha intenção, mais é muito bom tanto para os outros que leem como para nos mesmos faz bem para o ego, escrever corretamente e organizar bem o texto, com certeza não sou o melhor exemplo disso mais eu sempre tento melhorar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok não há problema

obrigada pela ajuda

mas ainda não consegui resolver a questao da encriptação

eu primeiro quero ler dados da db encriptados so depois e que ponho a fazer no registo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.