WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Generera md5 (https://www.wn.se/forum/showthread.php?t=37680)

Craxen 2009-07-01 13:51

Har massor med lösenord (+4000) i klartext som jag behöver kryptera med MD5.

Här det någon som vet om det finna en generator som klarar av flera rader samtidigt? Den jag hittat tar endast 49 rader åt gången.

Just nu så har jag alla rader i en excel fil, finns det kanske något som man kan koppla direkt till excel?

Tack för alla tips och ideer.

//Johan

coredev 2009-07-01 13:53

Kan du inte göra följande: exportera excelfilen till csv, importera i asp / php / whatever, kör sedan en loop för varje rad, exportera tillbaka till excel?

WeaZear 2009-07-01 14:19

Citat:

Originally posted by coredev@Jul 1 2009, 13:53
Kan du inte göra följande: exportera excelfilen till csv, importera i asp / php / whatever, kör sedan en loop för varje rad, exportera tillbaka till excel?
Skulle köra på det, skulle inte ta lång stund att lägga om allt.

Craxen 2009-07-01 14:22

ok, men nu så är min kunskap om det rätt så begränsad... så finns det något ställe som beskriver hur jag ska sätta upp detta?

wiB 2009-07-01 14:30

Vart har du dina nycklar då? Är det en separat rad i en textfil eller har du rader i ett excelark? Om du har i ett excelark kan du importera skiten i en MySQL-databas.

Sen kör du antingen med funktionen fopen eller en enkel while-sats i PHP och tar ut rad för rad och kör på md5 med detta.

tartareandesire 2009-07-01 14:48

Citat:

Originally posted by Craxen@Jul 1 2009, 14:22
ok, men nu så är min kunskap om det rätt så begränsad... så finns det något ställe som beskriver hur jag ska sätta upp detta?

Varför har du lösenorden i en excelfil? Varifrån kommer dom och vart ska dom?

Nu är detta en generell beskrivning utan specifik kod:

1. Exportera till csv
2. Läs in filen i valfritt språk (behöver inte alls vara webbaserat som någon antydde)
3. Loopa igenom ett och ett
4. Kör md5-hash (eller varför inte sha-1?)
5. Exportera tillbaka eller stoppa in i databas direkt eller vart nu lösenorden ska

Jonas 2009-07-01 14:58

MD5 är inget säkert sätt för att hasha lösenord.

Unna dig SHA-1 eller något starkare.
Och använd gärna en SALT eller något också. Tex i php:
Kod:

function hashpass($password, $salt)
{
$oldpass = str_split($password, intval(strlen($password) / 2));
$newpass = sha1($oldpass[0] . $salt . $oldpass[1]);
return newpass;
}

$salt = '€%&/()=OJKDKAS';
$password = 'abc123';
$hashpassword = hashpass($password, $salt);


tartareandesire 2009-07-01 15:43

För de allra flesta duger md5 (+ salt) alldeles utmärkt och lägger man till ytterligare något skydd mot brute force så ligger man väldigt bra till.

Brukar normalt sett köra sha-1 och dubbla salt själv, ibland med extra inloggningsskydd för att slippa brute force. Den trafiken klarar man sig bra utan.

allstars 2009-07-01 16:59

om input och output skall vara i databasen kan du först skapa ett nytt fält "newpassword" och göra en update och använda den inbygda MD5-funktionen (om du använder MySQL, vet inte om MSSQL har sådan funktion)

Ristorasto 2009-07-01 17:29

Räcker väl med att uppdatera befintliga kolumnen

UPDATE tabell SET losen = SHA1(losen + 'hemligtord')

tartareandesire 2009-07-01 18:59

Citat:

Originally posted by Ristorasto@Jul 1 2009, 17:29
Räcker väl med att uppdatera befintliga kolumnen
UPDATE tabell SET losen = SHA1(losen + hemligtord)

Att döma av det inledande inlägget så verkar det inte vara aktuellt med en sql-databas av någon anledning, därav de kanske något okonventionella svaren och mina frågor.

allstars 2009-07-01 20:12

vad gör man med lösenord i ett excelark, egentligen? :D

Ristorasto 2009-07-01 20:32

Citat:

Ursprungligen postat av tartareandesire
Citat:

Ursprungligen postat av Ristorasto
Räcker väl med att uppdatera befintliga kolumnen
UPDATE tabell SET losen = SHA1(losen + hemligtord)

Att döma av det inledande inlägget så verkar det inte vara aktuellt med en sql-databas av någon anledning, därav de kanske något okonventionella svaren och mina frågor.

Jo det är ju helt korrekt.. Dock var det bara en tanke att om man inte hade kunskap om att programmera en lösning så kan man ju alltid importera en csv-fil från excel till en tabell och köra sql-kommandot med phpmyadmin eller liknande för att sedan exportera tillbaks datan igen.

Var mest en förenklad tanke för att undvika programmeringsbiten, men det är ju klart, det är inte alltid det smartaste :-)

BjörnJ 2009-07-01 20:35

Citat:

Originally posted by tartareandesire@Jul 1 2009, 15:43
ibland med extra inloggningsskydd för att slippa brute force. Den trafiken klarar man sig bra utan.
Hur har du löst det? Spara alla misslyckade inloggningsförsök i DB, och sedan kolla loggtabellen vid varje inloggningsförsök?

tartareandesire 2009-07-01 20:52

Citat:

Ursprungligen postat av BjörnJ
Citat:

Ursprungligen postat av tartareandesire
ibland med extra inloggningsskydd för att slippa brute force. Den trafiken klarar man sig bra utan.

Hur har du löst det? Spara alla misslyckade inloggningsförsök i DB, och sedan kolla loggtabellen vid varje inloggningsförsök?

Jag brukar spara information om misslyckade inloggningar, ja, men det mest effektiva är att bara tillåta några misslyckade försök per en bestämd tidsperiod.

BjörnJ 2009-07-01 21:13

Citat:

Originally posted by tartareandesire@Jul 1 2009, 20:52
men det mest effektiva är att bara tillåta några misslyckade försök per en bestämd tidsperiod.
Ja, det var ungefär så jag tänkte. Hur löser man det på bästa sätt rent praktiskt? Göra en extra select innan inloggningen? Typ:

SELECT COUNT(*) AS fails FROM log WHERE ip=[ip] AND type=[login_failed] AND time>[now-1800]

if(fails>5) visa felmeddelande else försök logga in

Hjalmarsson 2009-07-01 21:25

Citat:

Originally posted by Jonas@Jul 1 2009, 14:58
MD5 är inget säkert sätt för att hasha lösenord.

Unna dig SHA-1 eller något starkare.
Och använd gärna en SALT eller något också. Tex i php:
Kod:

function hashpass($password, $salt)
{
$oldpass = str_split($password, intval(strlen($password) / 2));
$newpass = sha1($oldpass[0] . $salt . $oldpass[1]);
return newpass;
}

$salt = '€%&/()=OJKDKAS';
$password = 'abc123';
$hashpassword = hashpass($password, $salt);


Håller ju bara om strängens längd INTE är udda.

Kod:

return newpass;
return $newpass;

Craxen 2009-07-01 22:46

Citat:

Originally posted by allstars@Jul 1 2009, 19:12
vad gör man med lösenord i ett excelark, egentligen? :D
Håller på att byta plattform på butiken, och har lyckets få ut all kundinfo till en excel.
där av det =)

Jag ser att jag har fått många tips och frågor till hur jag ska lösa detta, men jag vet inte riktigt om det är något som har kunnat hjälpa mig.

Jag letar vidare på nätet efter en generator där jag kan klistar in minst 100 rader och sedan få ut dem krypterade

tartareandesire 2009-07-01 22:56

Citat:

Ursprungligen postat av Craxen
Citat:

Ursprungligen postat av allstars
vad gör man med lösenord i ett excelark, egentligen? :D

Håller på att byta plattform på butiken, och har lyckets få ut all kundinfo till en excel.
där av det =)
Jag ser att jag har fått många tips och frågor till hur jag ska lösa detta, men jag vet inte riktigt om det är något som har kunnat hjälpa mig.
Jag letar vidare på nätet efter en generator där jag kan klistar in minst 100 rader och sedan få ut dem krypterade

http://www.aui.se/md5.php

Jonas 2009-07-02 00:13

Citat:

Ursprungligen postat av Hjalmarsson
Citat:

Ursprungligen postat av Jonas
MD5 är inget säkert sätt för att hasha lösenord.
Unna dig SHA-1 eller något starkare.
Och använd gärna en SALT eller något också. Tex i php:
Kod:

function hashpasspassword, salt
{
oldpass = str_splitpassword, intvalstrlenpassword / 2;
newpass = sha1oldpass0 . salt . oldpass1;
return newpass;
}
salt = €%/=OJKDKAS;
password = abc123;
hashpassword = hashpasspassword, salt;


Håller ju bara om strängens längd INTE är udda.
Kod:

return newpass;
return newpass;

Nej, det gör det inte.

intval() returnerar "false" om det är en bokstav först, är det siffror så returnerar den alla siffror fram tills det att ett icke numeriskt tecken dyker upp. Så är det en float så avrundar den nedåt.

Låt säga: 3.9 så returneras 3, vid a301 så returneras false osv.

Läs på om funktionerna...

Hjalmarsson 2009-07-02 02:58

Citat:

Ursprungligen postat av Jonas
Citat:

Originally posted by -Hjalmarsson@Jul 1 2009, 21:25
Citat:

Ursprungligen postat av Jonas
MD5 är inget säkert sätt för att hasha lösenord.
Unna dig SHA-1 eller något starkare.
Och använd gärna en SALT eller något också. Tex i php:
Kod:

function hashpasspassword, salt
{
oldpass = str_splitpassword, intvalstrlenpassword / 2;
newpass = sha1oldpass0 . salt . oldpass1;
return newpass;
}
salt = €%/=OJKDKAS;
password = abc123;
hashpassword = hashpasspassword, salt;


Håller ju bara om strängens längd INTE är udda.
Kod:

return newpass;
return newpass;



Nej, det gör det inte.

intval() returnerar "false" om det är en bokstav först, är det siffror så returnerar den alla siffror fram tills det att ett icke numeriskt tecken dyker upp. Så är det en float så avrundar den nedåt.

Låt säga: 3.9 så returneras 3, vid a301 så returneras false osv.

Läs på om funktionerna...

Kod:

$salt = 'salt';
        $password = 'abcd123';
 
        $oldpass = str_split($password, intval(strlen($password) / 2));
        $newpass = $oldpass[0] . " - ". $salt . " - " .$oldpass[1];

Kod:

//oldpass
Array
(
  [0] => abc
  [1] => d12
  [2] => 3
)

//newpass
abc - salt - d12

Så du vill fortfarande splitta strängen var 3'e

Kod:

        $str = "0123456789abcdefghijk"; //21 tecken långt
        $arr = str_split($str, 10); //splittar var 10e

Kod:

Array
(
  [0] => 0123456789
  [1] => abcdefghij
  [2] => k
)

Kom igen nu för fan.

Jonas 2009-07-02 10:29

Vad är problemet?

Det kommer fortf. att ge samma resultat när användaren skriver in sitt lösenord?

Den användare först och andra placeringen i arrayen. Den 3dje används inte vid lösenordsskapande eller lösenordsverifiering. Ja, kan klassas som osäkert eftersom sista tecknet inte kontrolleras.

tartareandesire 2009-07-02 11:07

Citat:

Originally posted by Jonas@Jul 2 2009, 10:29
Vad är problemet?
Det kommer fortf. att ge samma resultat när användaren skriver in sitt lösenord?
Den användare först och andra placeringen i arrayen. Den 3dje används inte vid lösenordsskapande eller lösenordsverifiering. Ja, kan klassas som osäkert eftersom sista tecknet inte kontrolleras.

Hehe, ni missuppfattar väl varandra lite grann. Hur som helst så är det som du antyder en olämplig metod då ett antal olika lösenord ger samma resultat.

Jonas 2009-07-02 16:42

Citat:

Ursprungligen postat av tartareandesire
Citat:

Ursprungligen postat av Jonas
Vad är problemet?
Det kommer fortf. att ge samma resultat när användaren skriver in sitt lösenord?
Den användare först och andra placeringen i arrayen. Den 3dje används inte vid lösenordsskapande eller lösenordsverifiering. Ja, kan klassas som osäkert eftersom sista tecknet inte kontrolleras.

Hehe, ni missuppfattar väl varandra lite grann. Hur som helst så är det som du antyder en olämplig metod då ett antal olika lösenord ger samma resultat.

Jo, men man kan ev. byta ut så att varje användare har en unik salt. Då fungerar det.

Eller så byter man ut str_split emot:
Kod:

function hashpass ($password, $salt)
{
$len = intval(strlen($password) / 2);
$oldpass1 = substr($password, 0, $len);
$oldpass2 = substr($password, $len);
$newpass = sha1($oldpass2 . $salt . $oldpass2);
return $newpass;
}

Kan alltid byta ut sha1() mot hash().

Kod:

function hashpass ($password, $salt)
{
$len = intval(strlen($password) / 2);
$oldpass1 = substr($password, 0, $len);
$oldpass2 = substr($password, $len);

$tohash = $oldpass2 . $salt . $oldpass2;

$newpass = hash('whirlpool', $tohash);
return $newpass;
}


tartareandesire 2009-07-02 17:09

Det funkar annars att bara köra så här:

Kod:

$oldpass = str_split($password, (strlen($password) / 2) + 1);
Tycker det är bäst att köra med både ett generellt och ett unikt salt.


Alla tider är GMT +2. Klockan är nu 16:36.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson