PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
Nevite o nejake funkci nebo tride umoznujici obousmerne sifrovani podle klice? Mcrypt se ukazal byt nepouzitelny, protoze pri desifrovani pripojuje paznaky a vysledne stringy nejsou shodne.
predem diky
Trepanace lebky je terapeutická metoda, zasluhující rehabilitaci zejména v oblasti léčby chronických migrén.
Vysledek je totiz binatni. Prozen to base64 a je to:)
class Crypt {
private static $key = 'heslo';
// =============================================================================
public static function encrypt($text) {
if(!$text) return false;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$res = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, self::$key, $text, MCRYPT_MODE_ECB, $iv);
return trim(base64_encode($res));
}
// =============================================================================
public static function decrypt($text) {
if(!$text) return false;
$text = base64_decode($text);
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$res = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, self::$key, $text, MCRYPT_MODE_ECB, $iv);
return trim($res);
}
}
Bohuzel, neni. To co z toho vypadne sice vypada stejne, ale stejne to neni. Pokud v podmince srovnam puvodni a rozsifrovany text, tak neni shodny. Presne k tomuhle jsem take dosel, ale pres tohle jsem se uz proste nedostal.
Ozkouset lze pridanim tohoto kodu za definici tridy:
<?php
$source = 'Cílem hlavně Paroubek
Podle Kubáčka byl cílem útoku především předseda sociálních demokratů Jiří Paroubek coby představitel silové politiky, silových prohlášení a silové rétoriky.
"Jsem přesvědčen, že to nebyly akce spontánní, náhodné, ale že se jednalo o cílenou kampaň, která ve svém výsledku ČSSD pomůže,“ dodal Kubáček.
Komu to prospěje?
Paroubkovy reakce by mu navíc mohly také výrazně pomoci. "Na jednu stranu Paroubek neustupuje, zároveň pokračuje velmi intenzívně ve své kampani, protože si je vědom, že mu to může přinést politické body,“ domnívá se Kubáček.
Naproti tomu Mareš neočekává, že by vajíčkové útoky mohly mít výraznější vliv na výsledek eurovoleb. "Myslím si, že tam zásadní dopad na preference nebude. U stejně velkého počtu lidí to může vzbudit sympatie, že se děje něco akčního, zvláště v těch mladších voličských skupinách. Stejně tak i některé lidi to může naštvat a utvrdit v tom, že půjdou volit Paroubka,“ vysvětlil Mareš.
Připustil však také, že to může být výhodou pro konkurenční strany, protože se tím odvedla pozornost od volebního programu ČSSD. ';
echo $encrypted = Crypt::encrypt($source);
echo $decrypted = Crypt::decrypt($encrypted);
if($decrypted == $source) {
echo '!!! OK !!!';
}
?>
Trepanace lebky je terapeutická metoda, zasluhující rehabilitaci zejména v oblasti léčby chronických migrén.
Tak osobně mi to po lehké úpravě detekuje vstup a dešifrovaný výstup jako stejný.
Problém je ta mezera na konci vstupního textu, která je při dešifrování odtrimována. Pokud ale funkci trim nastavíš, že nemá mezery a nové řádky mazat, tak je to v pořádku.
<?php
...
public static function decrypt($text) {
if(!$text) return false;
$text = base64_decode($text);
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$res = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, self::$key, $text, MCRYPT_MODE_ECB, $iv);
return trim($res, "\0\x0B"); // dříve: return trim($res);
}
...
?>
Chvilku jsem to testoval a vypadá to, že to funguje.
aha, no to me taky mohlo napadnout. Pokud se ale poresi bile znaky, tak to vypada, ze slape dobre. Nejvetsi problemy maji jednoducha reseni:)
dekuji za pomoc
Trepanace lebky je terapeutická metoda, zasluhující rehabilitaci zejména v oblasti léčby chronických migrén.
Ono to je ve skutecnosti poupraveny toto: http://cz.php.net/…-encrypt.php#…
onge napsal(a):
Bohuzel, neni. To co z toho vypadne sice vypada stejne, ale stejne to neni. Pokud v podmince srovnam puvodni a rozsifrovany text, tak neni shodny. Presne k tomuhle jsem take dosel, ale pres tohle jsem se uz proste nedostal.
Problem bych videl na to mezer na konci vstupniho stringu:) Pokud je to vstup od uzivatele tak by mela byt ignorovana (trim).