#1 před 3 lety

onge
Člen
Registrovaný: 13. 11. 2008
Příspěvky: 61

obousmerne sifrovani

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.

 

#2 před 3 lety

phx
Moderator
Registrovaný: 17. 4. 2008
Příspěvky: 878

Re: obousmerne sifrovani

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);
        }
}

 

#3 před 3 lety

onge
Člen
Registrovaný: 13. 11. 2008
Příspěvky: 61

Re: obousmerne sifrovani

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.

 

#4 před 3 lety

vlki
Člen
Registrovaný: 30. 6. 2008
Příspěvky: 239

Re: obousmerne sifrovani

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.

 

#5 před 3 lety

onge
Člen
Registrovaný: 13. 11. 2008
Příspěvky: 61

Re: obousmerne sifrovani

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.

 

#6 před 3 lety

phx
Moderator
Registrovaný: 17. 4. 2008
Příspěvky: 878

Re: obousmerne sifrovani

Ono to je ve skutecnosti poupraveny toto: http://cz.php.net/…-encrypt.php#…

 

#7 před 3 lety

phx
Moderator
Registrovaný: 17. 4. 2008
Příspěvky: 878

Re: obousmerne sifrovani

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).

 

Zápatí