sha1+salt inladen in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michiel v

michiel v

01/02/2012 17:28:22
Quote Anchor link
Als ik een csv inlaad in de database met paswoorden zonder sha1+salt bij het inloggen werken de paswoorden niet meer. Hoe kan dit?
 
PHP hulp

PHP hulp

08/09/2024 04:09:30
 
Php knipper

php knipper

01/02/2012 17:34:03
Quote Anchor link
het paswoord komt niet overeen!

ik voer in in wachtwoord php
de php zet dan het wachtwoord om in sha1
nadien kijkt hij of dat wachtwoord en gebruikersnaam in 1 tabel hetzelfde zijn.
zo ja ga verder
zo niet fout

als je php ingeeft in het wachtwoord veld dan gaat hij dus niet op zoek in de database naar php maar naar de omzetting ervan.
 
Joren de Wit

Joren de Wit

01/02/2012 17:35:31
Quote Anchor link
Je bedoelt dat de niet-gehashte variant van de wachtwoorden in de database geïmporteerd worden en dat vervolgens de inlogprocedure (die de wel-gehashte variant gebruikt) niet meer werkt? Dat lijkt me vanzelfsprekend aangezien je in de database natuurlijk ook de gehashte versie moet hebben, of begrijp ik je verkeerd?
 
Michiel v

michiel v

01/02/2012 17:51:04
Quote Anchor link
Ja precies, ik ben blij dat je het wat beter kan omschrijven. Nog suggesties hoe ik de wachtwoorden kan omzetten naar sha1 + salt voordat ik het inlaad in de database?
 
Joren de Wit

Joren de Wit

01/02/2012 17:54:51
Quote Anchor link
Klein PHP scriptje schrijven? 1. Lees CSV uit, 2. Hash met salt, 3. Input in database. Klaar is kees ;-)
 

01/02/2012 17:54:57
Quote Anchor link
Om hoeveel records gaat het? Anders zou je ze kunnen inladen, een extra veld aanmaken, ze opvragen en dan updaten met sha1 + salt. Of je kunt het eerst doen zoals Joren al zei.
Gewijzigd op 01/02/2012 17:55:38 door
 
Michiel v

michiel v

01/02/2012 17:59:05
Quote Anchor link
Ok bedankt! Toevallig een linkje naar waar ik zo'n scriptje kan downloaden?
 

01/02/2012 18:13:41
Quote Anchor link
Dat zal er waarschijnlijk niet zijn, maar je kunt dit snel schrijven als je wilt.
 
Michiel v

michiel v

01/02/2012 18:20:53
Quote Anchor link
Heb je misschien een voorbeeldje om me opweg te helpen?
 

01/02/2012 18:59:57
Quote Anchor link
Je zet gewoon bij $place de plaats van waar de password in de CSV staat. Dan zet je bij $filename de naam van het bestand en bij $new_filename de nieuwe bestandsnaam.

Het oude bestand wordt ook behouden voor de zekerheid, maar zo krijg je een nieuwe CSV die je gewoon kan inladen in PHPmyAdmin.

Hier dan de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php

    # The name of the file:
    $filename = 'test.csv';
    $new_filename  = 'test2.csv';
    
    # The place of the password:
    $place = 1;
    
    # When the file exists:
    if((file_exists($filename)) && (is_numeric($place))) {
    
        # Open the CSV file:
        $file = fopen($filename, 'r');
        
        # The newline:
        $newlines = '';
        # Read each line:
        while($line = fgetcsv($file, filesize($filename), ',')) {
        
            for($i = 0; $i <= count($line) - 1; $i++) {
            
                # The newline for the file:
                if($i != $place)
                    $newlines .= '"'.$line[$i].'"';
                else {
                    
                    # Make a salt:
                    $salt = substr(str_shuffle('0123456789').rand(1000,9999), 6);
                    
                    # Hash the password + the salt:
                    $new_pass = sha1($salt.$line[$i]);
                    
                    # Add the salt + the pass to the newline:
                    $newlines .= '"'.$new_pass.'","'.$salt.'"';
                
                }

                
                if($i != count($line) - 1)
                    $newlines .= ',';
                else
                    $newlines .= "\r\n";
                
            }
            
        }

        
        # Write everything to the new file:
        $new_file = fopen($new_filename, 'w');
        fwrite($new_file, $newlines);
        fclose($new_file);
        
    }

    
?>

Als je eens een andere salt wilt, herlaad dan gewoon dit bestand en voilà, een nieuwe salt + password wordt dan in het bestand geschreven.

Edit
De code is een klein beetje geupdate, er zijn twee onnodige variabelen verwijderd. Ik heb even de code op 200.000 lijnen of code (CSV bestand) geprobeerd en het werkte perfect.

Hopelijk lukt alles, veel succes ermee met het veiliger maken van de wachtwoorden.
Gewijzigd op 01/02/2012 19:18:17 door
 
Michiel v

michiel v

01/02/2012 20:20:34
Quote Anchor link
Hoi Aaron,

Echt super bedankt! Ga er mee aan de slag. Fijne avond!

Groeten,

Michiel
 
Michiel v

michiel v

07/02/2012 09:40:35
Quote Anchor link
Hoi Aaron,

Het lukte me steeds maar niet om het script goed werkend te krijgen. Ik ben er nu achter dat het hem zit in de $line [$i].

Bijvoorbeeld van het paswoord: ziggo1234

wordt gelezen in de waarde $line [$i] als: paswoord 1234

De letters worden dus weggehaald, hoekan dit?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/02/2012 10:14:36
Quote Anchor link
Kijk ook eens naar LOAD DATA INFILE
Gewijzigd op 07/02/2012 10:14:55 door Ger van Steenderen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.