Unix password encryptie vraagje, deel 2

Pagina: 1
Acties:
  • 27 views sinds 30-01-2008

  • phaas
  • Registratie: Augustus 2001
  • Laatst online: 23-01-2025
Zie deel 1 Unix password encryptie vraagje
Helaas is mn topicje gesloten, en mss wel terecht, maar ik heb toch nog even een vraag hieromtrent.

Goed, eerst maar even mn code:

C++:
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
    bool Password::cryptUNIX_DES( char* salt)
    {
        des_context ctx;
        unsigned char output[8];
        unsigned char pw[8];
        unsigned char input[8];
        
        bzero( input, 8 );
        bzero( output, 8 );
        
/* het wachtwoord kopieëren naar pw. is het korter dan 8 bytes -> null fillen, langer dan acht bytes -> truncate */
        uint  l;
        if( m_data.length() > 8 )
            l = 8;
        else
            l = m_data.length();
        memcpy( pw, m_data.data(), l );
        if( l < 8 )
            memset( pw, 0, 8 - l );
            
        //pw[0] ^= salt[0];
        //pw[1] ^= salt[1];
    
/* De key zetten, duh */

        des_set_key( &ctx, pw );

/* 25x DES'en */
        
        for(uint i =0; i < 25; i++)
        {
            des_encrypt( &ctx, input, output );
            memcpy( input, output, 8 );
        }
        
/* Deze troep is een beetje overbodig, let daar maar even niet op */
        unsigned char result[9];
        result[8] ='\0';
        
        memcpy( result, output, 8 );
        
/* Het resultaat base64'en, en ja, deze casting shit is stupide */

        m_data =Base64::encode( QString((const char*)result) ).data();

/* Alleen nog even het salt aan de voorkant van het resultaat zetten */     
        m_data =QCString(salt, 3) + m_data;
        
        return true;
    }


- m_data is een QCString met het wachtwoord (het gecodeerde wachtwoord komt ook weer terug in m_data).
- des_set_key() en des_encrypt() zijn 3rd party DES functies
De rest spreekt voor zich.

En dan nu de vraagen:
- Wat moet ik in vredesnaam met dit 'salt' doen? Ik weet dat het de eerste twee bytes moeten vormen van het resultaat maar het moet óók het wachtwoord moduleren, hoe?
- Het komt natuurlijk vaak voor dat het wachtwoord langer is dan 8 bytes en aangezien DES blokken van 8 bytes eet, valt in mijn w.w. de rest dus weg.

En ja, ik ben al de halve middag bezig met zoeken op Google.

Bedankt!

[ Voor 6% gewijzigd door phaas op 07-02-2005 17:51 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:19

gorgi_19

Kruimeltjes zijn weer op :9

Zie Je topic is dicht en het is onterecht? Lees hier!

Ben je het niet eens met een moderator over een slotje, mail dan de moderator die het topic sloot, in dit geval Creepy dus :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Dit topic is gesloten.