Mcrypt - wie genau?

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

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]

Anwendungsbeispiel:<span class="syntaxdefault"><?php<br />$data&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">'geheime&nbsp;Botschaft&nbsp;o_O'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">//&nbsp;Passwort<br /></span><span class="syntaxdefault">$key&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxstring">'wtf&nbsp;lol'</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">//&nbsp;Modul&nbsp;öffnen<br /></span><span class="syntaxdefault">$td&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">mcrypt_module_open</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'twofish'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">''</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">'cbc'</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">''</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">//&nbsp;Initialization&nbsp;vector<br /></span><span class="syntaxdefault">$iv&nbsp;</span><span class="syntaxkeyword">=&nbsp;</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">),&nbsp;(</span><span class="syntaxdefault">DIRECTORY_SEPARATOR&nbsp;</span><span class="syntaxkeyword">==&nbsp;</span><span class="syntaxstring">'\\'</span><span class="syntaxkeyword">)&nbsp;?&nbsp;</span><span class="syntaxdefault">MCRYPT_RAND&nbsp;</span><span class="syntaxkeyword">:&nbsp;</span><span class="syntaxdefault">MCRYPT_DEV_RANDOM</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">//&nbsp;Passwort&nbsp;mit&nbsp;maximaler&nbsp;Länge&nbsp;erzeugen<br /></span><span class="syntaxdefault">$key&nbsp;</span><span class="syntaxkeyword">=&nbsp;</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">),&nbsp;</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,&nbsp;</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">//&nbsp;Modul&nbsp;initialisieren<br /></span><span class="syntaxdefault">mcrypt_generic_init</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$iv</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">//&nbsp;Verschlüsseln<br /></span><span class="syntaxdefault">$encrypted&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">mcrypt_generic</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$data</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">//&nbsp;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">,&nbsp;</span><span class="syntaxdefault">$key</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$iv</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">//&nbsp;Entschlüsseln<br /></span><span class="syntaxdefault">$decrypted&nbsp;</span><span class="syntaxkeyword">=&nbsp;</span><span class="syntaxdefault">mdecrypt_generic</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$td</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxdefault">$encrypted</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">//&nbsp;NULL-bytes&nbsp;entfernen&nbsp;und&nbsp;ausgeben<br /></span><span class="syntaxkeyword">echo&nbsp;</span><span class="syntaxdefault">rtrim</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$decrypted</span><span class="syntaxkeyword">,&nbsp;</span><span class="syntaxstring">"\0"</span><span class="syntaxkeyword">),&nbsp;</span><span class="syntaxstring">"\n"</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxcomment">//&nbsp;Modul&nbsp;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. :wink:

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

@michi1234: aso…

@Scram: danke viele mals :p
aber könnte ich beim modus auch ‚sel‘ angeben, oder muss der modus schon existieren?

mfg Joey

Du kannst natürlich einen willkürlichen Modus angeben, nur funktionieren wird es dann nicht. :ps:

^^ eben :smiley: