Hallo E*pvpers
Vorwort
EinWeg-Verschlüsselung
Zwei-Weg-Verschlüsselung
Das war es auch im großen oder ganzen. Sry falls es soetwas hier schon gibt ( habe nicht gefunden über die Sufu .
mfg
Vorwort
heute werde ich euch einen kurzen Einblick in die EinWeg und ZweiWegVerschlüsselung via PHP zeigen. Dies wird vorallem für das Verschlüsseln von Passwörtern oder sensiblen Dateien benutzt. ( Richtet sich an diejenigen, die sich schon etwas damit auskennen )
EinWeg-Verschlüsselung
Die Ein-Weg-Verschlüsslung hat einen deutlichen Vorteil für die Anwender einer Webapplikation,
da NIEMAND , auch nicht der Datenbankadmnistrator
des Betreibers jemals das unverschlüsselte Passwort zu Gesicht bekommt. ( Wird soweit ich weiss, bei der Datenbank
von Metin2 verwendet
( Passwort ist verschlüsslet in der Datenbank).
WICHTIG ! Es ist nicht möglich bzw nur sehr schwer wieder zu entschlüsseln!
Beispiel für die Login überprüfung eines per Ein-Weg verschlüsselten Passwords...
Hierbei hilft es dem Angreifer ( wenn er euer PW will) also nichts, den verschlüsselten Wert aus der Datenbank zu kennen. Benutz der das Passwort nbeim Login so wird dieser Wert durch das System abermals verschlüsselt.
Zurzeit ist der wohl am meisten benutze EinWegAlgorithmus der MD5 ( Ein Hashing Algorithmus).
Anwendung in PHP
an.
Bsp:
da NIEMAND , auch nicht der Datenbankadmnistrator
des Betreibers jemals das unverschlüsselte Passwort zu Gesicht bekommt. ( Wird soweit ich weiss, bei der Datenbank
von Metin2 verwendet
( Passwort ist verschlüsslet in der Datenbank).
WICHTIG ! Es ist nicht möglich bzw nur sehr schwer wieder zu entschlüsseln!
Beispiel für die Login überprüfung eines per Ein-Weg verschlüsselten Passwords...
PHP Code:
<?php
function LoginOkay($eingabePasswort,$dbPasswort) {
§checkPasswort = verschluessele($eingabePasswort);
if($checkPasswort == $dbPasswort)
{
return true;
}
else
{
return false;
}
}
?>
Zurzeit ist der wohl am meisten benutze EinWegAlgorithmus der MD5 ( Ein Hashing Algorithmus).
Anwendung in PHP
PHP Code:
string md5(string $zeichenkette [, boolean $binaer])
Bsp:
PHP Code:
<?php
echo md5('phpmysql');
//ergibt c4cdf8eb922fc70cbf676b5e517d5f37
echo md5('phpmysql',true);
//ergibt ÄÍøë’/Ç¿gk^Q}_7
echo sha1('phpmysql');
//ergibt 49d88a4db817a5733ff1e8ff7a3f49a7489f71d6
echo sha1('phpmysql',true);
//ergibt IØŠM¸ ¥s?ñèÿz?I§HŸqÖ
?>
Zwei-Weg-Verschlüsselung
Mit der Zwei-Weg-Verschlüsselung werden Daten verschlüsselt, die man über das Internet verschicken will, die hinterher aber auch wieder lesbar sein sollen. Hierfür wird meistens mcrypt verwendet ( ein Modul für PHP )
Anwendung :
Zur Angabe von $algorithmus verfügt das Modul mcrypt über eine Liste von Konstanten. BSP:
Als Schlüssel $schluessel dient eine von euch gewählte Zeichenkette. Hier gilt allerdings vorsicht, nur ihr und diejenige Person, die die Datei wieder entschlüsseln soll, sollten auch die Zeichenkette kenne. Die zu verschlüsselten Daten werden in $zeichenkette angegeben.
As $modus kann man einen der folgenen Konstanten wählen:
Für $initialisierung muss man sich einen binären String vorstellen, der für den Verschlüsselungsalgorithmus wie ein Startpunkt wirkt, damit er weiß , mit welcher Zeichenkette er die Arbeit aufnehmen soll.
Je nach Kombination von Algorithmus und Modus hat der Initialisierungsvektor eine eigene Form bzw. Länge. Diese findest du mit dem Befehl
heraus. Der resultierende Wert lässt sich dann nutzen, um eine spezifischen Vektor mittels
zu erstellen. Als Quelle solltest du aus Kmpatibilitätsgürnden den in PHP eingebauten Zufalsgenerator einsetzen. Um dies anzuzeigen, dient die Konstante
. Alternativ gibt es die Funktionen
, die jedoch nur unter Linux existieren.
Beipsiel für eine einfache Zeichenkette "unleserlich machen"
Heraus kommt eine Verschlüsselte Zeichenkette $verschluesselt, die sich gefahrlos verschicken lässt. Jede person, die diese Nachricht abfäng und nicht im Besitz des Schlüssels und des INitialisierungsvektors ist, kann mi tdem Inhalt nichts anfangen . Den INitialisierungsvektor kann man getrost der Nachricht beifügen, denn der Empfänger benötigt ihn zur Entschlüsselung über
Anwendung :
PHP Code:
string mcrypt_encrypt(string $alsorithmus;
string $schluessel, string $zeichenkette,
string $modus [, string $initialisierung])
PHP Code:
MCRYPT_BLOWFISH (>>blowfish<<)
MCRYPT_TRIPLEDES (>>tripledes<<)
etc
As $modus kann man einen der folgenen Konstanten wählen:
PHP Code:
MCRYPT_MODE_ECB (>>electronic codebook<<): vornehmlich für kurze Zeichenketten
MCRYPT_MODE_CBC (>>cipher block chaining<<): für Dateiverschlüsselung
MCRYPT_MODE_CFB (>>cipher feedback<<): für Byteströme , mit Verschlüsselung einzelner Bytes
MCRYPT_MODE_NOFB (>>output feedback<<): ähnlich wie >>cipher feedback<<
MCRYPT_MODE_STREAM: für dedizierte Bytesromalgorithmen
Je nach Kombination von Algorithmus und Modus hat der Initialisierungsvektor eine eigene Form bzw. Länge. Diese findest du mit dem Befehl
PHP Code:
int mcrypt_get_iv_size(string $algorithmus,string $modus)
PHP Code:
string mcrypt_create_iv(int $laenge, int $quelle)
PHP Code:
MCRYPT_RAND
PHP Code:
MCRYPT_DEV_RANDOM und MCRYPT_DEV_URANDOM
Beipsiel für eine einfache Zeichenkette "unleserlich machen"
PHP Code:
<?php
$zeichenkette = "Hier ist ein Satz mit einem kleinen Geheimnis: 1";
$schluessel = "0815";
$iv_size = mcrypt_get_iv_size(MCRYPT_TRIPLEDES, MCRYPT_MODE_CFB);
srand(microtime());
echo $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$verschluesselt = mcrypt_encrypt(MCRYPT_TRIPLEDES, $schluessel, $zeichenkette, MCRYPT_MODE_CFB, $iv);
echo "<br />".$verschluesselt;
echo mcrypt_decrypt(MCRYPT_TRIPLEDES, $schluessel, $verschluesselt, MCRYPT_MODE_CFB);
?>
PHP Code:
string mcrypt_decrypt(string $algorithmus,
string $schluessel, string $verschluesselt,
string $modus [, string $initialisierung])
Das war es auch im großen oder ganzen. Sry falls es soetwas hier schon gibt ( habe nicht gefunden über die Sufu .
mfg






, die eben darauf spekulieren, dass es nur eine bestimmte Anzahl an Hashwerten gibt ...
