2-weg encrypt / decrypt
Niet alle gegevens, maar wel enkele referenties worden hier van url1 naar url2 gestuurd via de header. Op url2.com worden deze referenties via $_GET verkregen, gevalideerd en vervolgens daarmee de volledige gegevens er weer bij gehaald.
Voorgaande resulteert dan bijvoorbeeld in:
Code (php)
Dit nodigt gebruikers echter uit om daar wat mee te klooien, kortom hier ontstond het idee om te gaan encrypten en decrypten mbv een "shared secret". De meeste resultaten die je op 2-weg encryptie zult vinden werken met een IV (initialization vector), maar volgens mij gaat dat sowieso cross-url nooit werken.
Al zoekende kwam ik op het onderstaande script, ik maak header nu alsvolgt:
Code (php)
De variabele "req" bevat nu een encrypted string waarin de variabelen staan (een array die eerst met implode("|",$vars); naar een string is gezet).
Dit lijkt te werken, maar het testen gaat het toch niet altijd goed...
Om het probleem verder te ontrafelen heb ik uiteindelijk de string zowel ongecodeerd als encrypted als variabelen toegevoegd aan de url om vervolgens daar waar ik decodeer ook de beschikking te hebben over de oorspronkelijke (ongecodeerde) string.
Wanneer het decrypten faalde heb ik de oorspronkelijke string (ongecodeerd dus) alsnog encrypt en vergeleken met de encrypted waarde in de url die zojuist faalde bij decrypt. Deze bleken echter identiek.
Inmiddels heb ik enkele encrypted waardes verzameld welke dezelfde string als oorsprong hebben, wanneer ik deze decrypted print komt daar bij allen weer dezelfde string uit.
Ik ben dus compleet de weg kwijt, iemand nog een idee wat hier niet goed gaat?
Code (php)
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
56
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
56
<?php
/**
zie ook:
http://stackoverflow.com/questions/3422759/php-aes-encrypt-decrypt
**/
/* voorbeeld
$Pass = "Passwort";
$Clear = "Klartext";
$crypted = fnEncrypt($Clear, $Pass);
echo "Encrypred: ".$crypted."</br>";
$newClear = fnDecrypt($crypted, $Pass);
echo "Decrypred: ".$newClear."</br>";
*/
function fnEncrypt($sValue, $sSecretKey)
{
return rtrim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$sSecretKey, $sValue,
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND)
)
), "\0"
);
}
function fnDecrypt($sValue, $sSecretKey)
{
return rtrim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
$sSecretKey,
base64_decode($sValue),
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
), "\0"
);
}
?>
/**
zie ook:
http://stackoverflow.com/questions/3422759/php-aes-encrypt-decrypt
**/
/* voorbeeld
$Pass = "Passwort";
$Clear = "Klartext";
$crypted = fnEncrypt($Clear, $Pass);
echo "Encrypred: ".$crypted."</br>";
$newClear = fnDecrypt($crypted, $Pass);
echo "Decrypred: ".$newClear."</br>";
*/
function fnEncrypt($sValue, $sSecretKey)
{
return rtrim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_256,
$sSecretKey, $sValue,
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND)
)
), "\0"
);
}
function fnDecrypt($sValue, $sSecretKey)
{
return rtrim(
mcrypt_decrypt(
MCRYPT_RIJNDAEL_256,
$sSecretKey,
base64_decode($sValue),
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_256,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
)
), "\0"
);
}
?>
Gewijzigd op 15/01/2015 16:04:13 door Marco V
Er zijn nog geen reacties op dit bericht.