Avatar billede mikkel251 Seniormester
09. oktober 2015 - 10:50 Der er 8 kommentarer og
1 løsning

hash password

jeg sidder med en hjemmeside jeg skal have lavet og jeg skal have hashet password så det bliver krypteret i databasen, men det er første gang jeg leger med den slags, så jeg er ret ny til det :D

så hvordan hasher jeg et password og hvordan kopler jeg det på min login og opret bruger metoder??

jeg ved man også bruger salt til det men det vil jeg lige vente med til jeg har forstået hash metoden
Avatar billede hrc Mester
09. oktober 2015 - 14:18 #1
Der findes indbyggede hash-rutiner i C#. Det vil jeg ikke komme ind på, det er der andre der kan bedre.

Vil bare lige pointere at den bedste fremgangsmåde er, at huske at generere det med et tilfældigt "salt" (som du gemmer sideløbende med hashet). På den måde får du ikke samme hash for samme password.
Avatar billede mikkel251 Seniormester
09. oktober 2015 - 14:54 #2
det med salt vil jeg gerne vente med jeg prøver at forstå hvordan jeg laver en hash og så derefter vil jeg tage salt og prøve at forstå det for til sidst at bruge dem sammen så lige nu leder jeg mere efter hvordan jeg laver en hash og hvordan jeg fletter den sammen med en login jeg selv laver i c# :)
Avatar billede arne_v Ekspert
09. oktober 2015 - 14:55 #3
Forskelligt tilfaeldigt salt per bruger og en standard hash algoritme som f.eks. SHA-256 evt. i flere iterationer eller en af de specielle password hash algoritmer.

SHA-256 eksempel uden salt og kun med en iteration:


public static string SHA256(string pw)
        {
            HashAlgorithm alg = new SHA256Managed();
            byte[] b = Encoding.UTF8.GetBytes(pw);
            alg.TransformFinalBlock(b, 0, b.Length);
            return BitConverter.ToString(alg.Hash).Replace("-", "");
        }
Avatar billede mikkel251 Seniormester
09. oktober 2015 - 15:18 #4
er det muligt at få uddybet hvad det er de forskellige ting i koden gør, somsagt er jeg ny til det med at kode jeg går lige nu på webintegrator uddannelsen men vi er ikke nået til at hash og salt en kode endnu, og jeg skal nemlig bruge mit til en hjemmeside jeg administrere for en ven :D og ville bruge min ferie på at lære lidt om det inden jeg bruger det :D
Avatar billede mikkel251 Seniormester
09. oktober 2015 - 15:44 #5
Det vil måske være nemmere hvis jeg viste den kode jeg øver mig på lige nu så i kan se hvad jeg har skrevet :D



min codebehind på login siden:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Security.Cryptography;
using System.Web.UI.WebControls;
using System.Text;

public partial class _Default : System.Web.UI.Page
{
    login objlogin = new login();

    protected void Page_Load(object sender, EventArgs e)
    {
        Page.Title = "Log ind på din konto";
    }



  protected void btnLogin_Click(object sender, EventArgs e)
    {
     


        DataTable dt = new DataTable();
       


        dt = objlogin.userlogin(txtBrugernavn.Text, txtAdgangskode.Text);
        if (dt.Rows.Count > 0)
        {
            Session["brugernavn"] = dt.Rows[0]["fldbrugernavn"].ToString();
            Session["id"] = dt.Rows[0]["fldid"].ToString();
            Response.Redirect("admin/Default.aspx");
        }
        else
        {
            litLogin.Text = "Dit brugernavn eller adgangskode er forkert. Prøv igen";
        }
    } 
}


og min metode jeg bruger fra min class fil:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Security;

public class login
{
    //Opret forbindelse til database
    dbacces DA = new dbacces();
    SqlCommand CMD = new SqlCommand();

    //Metoden for login for brugere
    public DataTable userlogin(string _brugernavn, string _adgangskode)
    {
     
        string kryptering = FormsAuthentication.HashPasswordForStoringInConfigFile(_adgangskode, "sha1");

        CMD = new SqlCommand(@"SELECT fldbrugernavn, fldid FROM tblHashes
                            WHERE fldadgangskode = @adgangskode AND fldbrugernavn = @brugernavn");

        CMD.Parameters.AddWithValue("@adgangskode", _adgangskode);
        CMD.Parameters.AddWithValue("@brugernavn", _brugernavn);

        return DA.GetData(CMD);
    }
}


den her:  string kryptering = FormsAuthentication.HashPasswordForStoringInConfigFile(_adgangskode, "sha1");  er en jeg har fået af min lære som jeg kunne prøve mig frem med men jeg forstå ikke helt hvordan jeg bruger den :D


jeg ved ikke om det hjælper og somsagt er den kode jeg øver mig på lige nu :)
Avatar billede arne_v Ekspert
09. oktober 2015 - 16:27 #6
HashAlgorithm alg = new SHA256Managed(); // creater hasher

byte[] b = Encoding.UTF8.GetBytes(pw); // convert input from string to byte array

alg.TransformFinalBlock(b, 0, b.Length); // hash

return BitConverter.ToString(alg.Hash).Replace("-", ""); // take hash and convert it to hex
Avatar billede mikkel251 Seniormester
09. oktober 2015 - 20:18 #7
det vil jeg se om jeg kan få noget ud af :) tak for hjælpen indtil videre :)
Avatar billede mikkel251 Seniormester
09. oktober 2015 - 20:18 #8
hvordan gør jeg lige så du kan få de point  du skal have
Avatar billede arne_v Ekspert
10. oktober 2015 - 01:43 #9
jeg skal smide et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester