bcg
22. Mai 2008 um 19:33
1
hallo,
wollte mich mal mit dem ver- und entschlüssel beschäftigen, also hab ich mcrypt gefunden…
aber auf php.net steht nicht wirklich viel
mir sagt einfach nichts, was ich in welcher variable speichern muss, damit es funktioniert…
kann mir da jemand auf die sprünge helfen?
mfg
Diese Funktion die du genannt hast sollte nicht mehr verwendet werden.
Sieh dir diese beiden Funktionen an:
de2.php.net/manual/de/function.m … eneric.php
de2.php.net/manual/de/function.m … eneric.php
Hier die Auflistung von allen mcrypt funktionen: de2.php.net/manual/de/ref.mcrypt.php
bcg
24. Mai 2008 um 13:33
3
aha…
du schlägst mir also (nur) mcrypt_generic und mdecrypt_generic vor…
sollte man mcrypt_decrypt und mcrypt_encrypt auch nicht verwenden, oder sind die obengenannten einfach “besser”?
mfg
[quote]du schlägst mir also (nur) mcrypt_generic und mdecrypt_generic vor…
sollte man mcrypt_decrypt und mcrypt_encrypt auch nicht verwenden, oder sind die obengenannten einfach “besser”?[/quote]
Ich sage nicht, dass du NUR mcrypt_generic() and mdecrypt_generic() benutzen sollst, sondern ANSTATT mcrypt_cbc(), denn bei mcrypt_cbc() steht:[quote] This function should not be used anymore, see mcrypt_generic() and mdecrypt_generic() for replacements. [/quote]
Scram
24. Mai 2008 um 14:44
5
Anwendungsbeispiel:<span class="syntaxdefault"><?php<br />$data </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'geheime Botschaft o_O'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// Passwort<br /></span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">= </span><span class="syntaxstring">'wtf lol'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// Modul öffnen<br /></span><span class="syntaxdefault">$td </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mcrypt_module_open</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'twofish'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">''</span><span class="syntaxkeyword">, </span><span class="syntaxstring">'cbc'</span><span class="syntaxkeyword">, </span><span class="syntaxstring">''</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Initialization vector<br /></span><span class="syntaxdefault">$iv </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mcrypt_create_iv</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">mcrypt_enc_get_iv_size</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">), (</span><span class="syntaxdefault">DIRECTORY_SEPARATOR </span><span class="syntaxkeyword">== </span><span class="syntaxstring">'\\'</span><span class="syntaxkeyword">) ? </span><span class="syntaxdefault">MCRYPT_RAND </span><span class="syntaxkeyword">: </span><span class="syntaxdefault">MCRYPT_DEV_RANDOM</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Passwort mit maximaler Länge erzeugen<br /></span><span class="syntaxdefault">$key </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">substr</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">md5</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">), </span><span class="syntaxdefault">0</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">mcrypt_enc_get_key_size</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">));<br /><br /></span><span class="syntaxcomment">// Modul initialisieren<br /></span><span class="syntaxdefault">mcrypt_generic_init</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$iv</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Verschlüsseln<br /></span><span class="syntaxdefault">$encrypted </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mcrypt_generic</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$data</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Close/reopen<br /></span><span class="syntaxdefault">mcrypt_generic_deinit</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">mcrypt_generic_init</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$iv</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// Entschlüsseln<br /></span><span class="syntaxdefault">$decrypted </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">mdecrypt_generic</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">, </span><span class="syntaxdefault">$encrypted</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">// NULL-bytes entfernen und ausgeben<br /></span><span class="syntaxkeyword">echo </span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$decrypted</span><span class="syntaxkeyword">, </span><span class="syntaxstring">"\0"</span><span class="syntaxkeyword">), </span><span class="syntaxstring">"\n"</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">// Modul schließen<br /></span><span class="syntaxdefault">mcrypt_generic_deinit</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">mcrypt_module_close</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">?></span>
twofish (Algorithmus) und cbc (Modus) kannst du verändern, wie du willst, sollte trotzdem klappen.
Vergiss nicht, dass du das Modul nach dem Initialisieren nur für entweder das Verschlüsseln oder Entschlüsseln verwenden kannst; wenn du beides mit dem selben Modul machen willst, musst du es neu initialisieren (s. „close/reopen“).
bcg
24. Mai 2008 um 15:23
6
@michi1234 : aso…
@Scram : danke viele mals
aber könnte ich beim modus auch ‚sel‘ angeben, oder muss der modus schon existieren?
mfg Joey
Scram
24. Mai 2008 um 15:25
7
Du kannst natürlich einen willkürlichen Modus angeben, nur funktionieren wird es dann nicht.