Data versleutelen en terughalen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

 - Diov  -

- Diov -

16/08/2013 13:39:24
Quote Anchor link
Hoi,

Met onderstaand script kan ik een een woord versleutelen.
Nu, ik heb dit script uitgeprobeerd (komt van internet), maar telkens veranderd de ge encrypted string.

Hoe komt dat?
Ook begrijp ik niet veel functies, en op php.net is het niet echt duidelijk
Heeft iemand een tutorial voor deze functie?

Alvast bedankt !
Diov

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
<?php
class Encryption
{
    const CYPHER = MCRYPT_RIJNDAEL_256;
    const MODE   = MCRYPT_MODE_CBC;
    const KEY    = 'somesecretphrase';

    public function encrypt($plaintext)
    {

        $td = mcrypt_module_open(self::CYPHER, '', self::MODE, '');
        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        mcrypt_generic_init($td, self::KEY, $iv);
        $crypttext = mcrypt_generic($td, $plaintext);
        mcrypt_generic_deinit($td);
        return base64_encode($iv.$crypttext);
    }


    public function decrypt($crypttext)
    {

        $crypttext = base64_decode($crypttext);
        $plaintext = '';
        $td        = mcrypt_module_open(self::CYPHER, '', self::MODE, '');
        $ivsize    = mcrypt_enc_get_iv_size($td);
        $iv        = substr($crypttext, 0, $ivsize);
        $crypttext = substr($crypttext, $ivsize);
        if ($iv)
        {

            mcrypt_generic_init($td, self::KEY, $iv);
            $plaintext = mdecrypt_generic($td, $crypttext);
        }

        return trim($plaintext);
    }
}


$versleuteld = new Encryption();
$encrypted_string = $versleuteld->encrypt('123'); // Åž-\Ž“kcþ1ÿ4gî:Xƒã%
echo $encrypted_string;

echo '<br><br><br>';
$decrypted_string = $versleuteld->decrypt($encrypted_string); // this is a test
echo $decrypted_string;
?>

Modedit:
Even de code en topicstart omgekeerd, en de code tussen code-tags geplaatst
Gewijzigd op 27/08/2013 18:54:11 door - Ariën -
 
PHP hulp

PHP hulp

05/11/2024 22:18:54
 
Michael R

Michael R

27/08/2013 17:06:05
Quote Anchor link
Als iets is gecodeerd kan je het helaas niet meer terughalen.
 
Ward van der Put
Moderator

Ward van der Put

27/08/2013 18:52:04
Quote Anchor link
Michael R op 27/08/2013 17:06:05:
Als iets is gecodeerd kan je het helaas niet meer terughalen.

Dat geldt voor asymmetrische encryptie. In dit geval wordt echter symmetrische encryptie gebruikt: wie de geheime sleutel weet, kan versleutelde data weer ontsleutelen.

Diov, deze klasse is op zich simpel. Waar loop je vast?
 
 - Diov  -

- Diov -

27/08/2013 22:51:38
Quote Anchor link
Ik snap gewoon de functies niet, wat ze doen etc.
Ook versta ik er niet veel van op php.net

Versleutelen en terughalen werkt wel,
maar stel:

Ik maak iets zoals WhatsApp, maar dan zijn de berichten versleuteld.
Hoe 'ontsleutel' ik dan terug de berichten?

Moet ik dan de key opslaan in de database? Wat ook niet echt veilig is volgens mij ...
 
Ward van der Put
Moderator

Ward van der Put

28/08/2013 07:32:05
Quote Anchor link
Deze vorm van encryptie is afhankelijk van drie variabelen:

- een geheime sleutel (secret key);
- een algoritme, bijvoorbeeld Rijndael;
- een codeersterkte (cipher strength), bijvoorbeeld 256.

In jouw klasse zijn dit constanten, maar je krijgt een flexibelere én veiligere opzet als je er eigenschappen met setters van maakt.

A en B kunnen versleutelde berichten uitwisselen als ze beide dezelfde geheime sleutel kennen. Daarvoor kun je de gedeelde sleutels opslaan in een database. In de huidige klasse is er namelijk maar één sleutel die door iedereen voor alles wordt gedeeld.
 
Bart V B

Bart V B

28/08/2013 07:52:08
Quote Anchor link
Geen idee wat voor applicatie dat je aan het maken bent.
Maar als je alles moet versleutelen om data van de een naar de ander te brengen, kan je dan niet beter een SSL verbinding nemen?

Daar is het immers voor gemaakt.
 



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.