- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 22-06-2009, 12:54
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Standard Anfänger Problem: Verschlüsseln mit Rijndael 256

Hallo erstmal,
Ich habe erst vor ca 4 Wochen begonnen mit PHP ein bisschen zu Programmieren und bin deshalb noch sehr grün hinter den Ohren.
Als Lektüre verwende ich hierfür
Zitat:
PHP5 / MYSQL 5 von Matthias und Caroline Kannengieser
.
Da ich momentan noch keinerlei Ahnung von Klassen habe, da das erst später im Buch dran kommt und ich das Buch nicht Kreuz und Quer lesen will, habe ich eine Frage bezüglich einer Klasse mit Rijndael Verschlüsselung 256.
(Ich schreib neben den Lesen natürlich immer wieder ein paar Scripts zwecks Übung)

Ich habe mir bereits ein paar Formularseiten gemacht in der ich Daten per POST auf andere Seiten sowie in eine SQL DB überträge.

Da ich z.B. Passwörter aber verschlüsselt Übertragen bzw in der DB ablegen will bin ich per Google auf eine Funktionen/Klasse gestoßen das meine Zwecke erfüllen sollte.
Allerdings weiß ich jetzt nicht ganz wie ich einen Variablen Wert jetzt damit Verschlüssle und Entschlüssle. (PS: Habe es in einer extra Datei und nur per Include eingefügt.)

Hier die Funktionen/Klasse:

PHP-Code:
<?php
///////////////////////////////////////////////////
//    A Encryption/Decryption CLASS with Rijndael 256    
//    By Ismet Ozalp
//  16.03.2005
//  Please Do not remove this header
///////////////////////////////////////////////////
class pWord {
    var 
$mykey "MyKey";
    function 
getEncryptedPass($len){
        
$pass $this->makeRandomPassword($len);
        return 
$this->linencrypt($pass);
    }
    function 
linencrypt($pass) {
        
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256MCRYPT_MODE_ECB); //get vector size on ECB mode 
        
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND); //Creating the vector
        
$cryptedpass mcrypt_encrypt (MCRYPT_RIJNDAEL_256$this->mykey$passMCRYPT_MODE_ECB$iv); //Encrypting using MCRYPT_RIJNDAEL_256 algorithm 
    
return $cryptedpass;
    }

    function 
lindecrypt($enpass) {
        
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256MCRYPT_MODE_ECB); 
        
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);
        
$decryptedpass mcrypt_decrypt (MCRYPT_RIJNDAEL_256$this->mykey$enpassMCRYPT_MODE_ECB$iv); //Decrypting...
    
return rtrim($decryptedpass);
    }
    function 
makeRandomPassword($len) { 
          
$salt "ABCDEFGHJKLMNPRSTUVWXYZ0123456789abchefghjkmnpqrstuvwxyz"
          
srand((double)microtime()*1000000); 
        for(
$i 0;$i $len;$i++) { 
            
$num rand() % 56
            
$tmp substr($salt$num1); 
            
$pass $pass $tmp
        } 
    return 
$pass
    }

?>
Ich bräuchte jetzt einfach nur ne kurze Erklärung wie ich es Verwende, wenn z.B.
$Geheim = "Darf niemand wissen"
ist.

Vielen dank schon mal für eure Hilfe.

Geändert von Maanee9 (22-06-2009 um 15:05 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 22-06-2009, 13:10
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Mal abgesehen vom konkreten Problem:

Passwörter sollte man nicht verschlüsseln - denn dann kann sie auch ein Angreifer, der Zugang zu den Daten enthält, wieder entschlüsseln.

Stattdessen sollte man sie unter Zuhilfenahme eines zufälligen Salt Hashen. Hash-Funktionen liefern einen hinreichend eindeutigen Wert, und haben aber keine "Umkehrfunktion". MD5 wurde lange Zeit dafür benutzt, gilt mit heutiger Rechenpower allerdings als angreifbar - deshalb benutzt man aktuell SHA1 oder noch "stärkere" Hash-Algorithmen.

Zitat:
Allerdings weiß ich jetzt nicht ganz wie ich einen Variablen Wert jetzt damit Verschlüssle und Entschlüssle.
Gibt's denn keine Dokumentation zu der Klasse?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 22-06-2009, 13:24
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Standard

Ok. Das Passwörter allgemein nicht so gespeichert werden sollen hab ich schon gehört. (Will ich ja auch eigentlich noch gar nicht)

Mir gehts jetzt nur darum das ich ein kleines Onlinegame machen will... also nix überagendes oder so.
Es geht nur darum das ich z.B. wenn ich nen Slotautomaten progrmmiere, der z.B. 5 Geldheiten als Guthaben hat, der Spieler damit spielt und verliert das neue Guthaben wieder per verschlüsselten _POST["Guthaben"] übertragen wird.

Nö.. hab leider keinerlei Dokumentation dazu. Da gabs nur die Datei ohne irgendwelche Infos oder sonst was dazu.

Darum wollte ich auch fragen ob jemand weiß, wie ich damit die Werte einer Variable verschlüssle und wieder entschlüssle.

Vll kann mich auch jemand auf ein ähnliches Script hinweisen das diesen Zweck erfüllen würde, falls es mit dem obigen gar nicht funktioniert.
Mit Zitat antworten
  #4 (permalink)  
Alt 22-06-2009, 13:26
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Maanee9 Beitrag anzeigen
Ok. Das Passwörter allgemein nicht so gespeichert werden sollen hab ich schon gehört. (Will ich ja auch eigentlich noch gar nicht)

Mir gehts jetzt nur darum das ich ein kleines Onlinegame machen will... also nix überagendes oder so.
Es geht nur darum das ich z.B. wenn ich nen Slotautomaten progrmmiere, der z.B. 5 Geldheiten als Guthaben hat, der Spieler damit spielt und verliert das neue Guthaben wieder per verschlüsselten _POST["Guthaben"] übertragen wird.
Und wie willst du es am Client verschlüsseln? Mit Javascript? Lässt sich sehr leicht umgehen. Mit Flash? Lässt sich dekompilieren.
Mit Zitat antworten
  #5 (permalink)  
Alt 22-06-2009, 13:28
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Und wie willst du es am Client verschlüsseln? Mit Javascript? Lässt sich sehr leicht umgehen. Mit Flash? Lässt sich dekompilieren.

Blubb... versteh ich jetzt nicht ganz.
Wieso Client ?

Der Client soll ja nur die Verschlüsselten Werte übertragen... der Rest wird doch nur Serverseitig behandelt.. Oder lieg ich da jetzt falsch.

Geändert von Maanee9 (22-06-2009 um 13:32 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 22-06-2009, 13:36
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Von wo wohin willst du die verschlüsselten Werte übertragen? Wenn du die Werte nur am Server verwendest, brauchst du sie nicht verschlüsseln.
Mit Zitat antworten
  #7 (permalink)  
Alt 22-06-2009, 13:42
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Standard

Ich zeigs einfach mal anhand meines Glückomats...
http://war-of-races.de/TEST/Zufallszahlen.php

Hier giebt man seine Werte ein und hatt ein gewisses Guthaben.
Man stellt sich ein um wie viel man Spielen kann.. wie viel verschiedene zahlen es geben soll und wie viele Richtig sein müssen.

Dann werden die Felder bei mir mit POST auf sich selber übertragen und in die Funktionen eingesetzt und das Ergebnis ausgegeben.
Das kann man natürlich beliebig wiederholen.

Und genau die Werte sollen jetzt damit verschlüsselt übertragen werden.
Mit Zitat antworten
  #8 (permalink)  
Alt 22-06-2009, 13:46
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Aber damit du die Werte beim Client anzeigen kannst, musst du sie auch beim Client wieder enstschlüsseln. Und damit du neue Werte posten kannst, musst die sie am Client wieder auch verschlüsseln. Oder wie hast du dir das vorgestellt? Ansonsten sieht der Benutzer ja nur verschlüsselten Zeichensalat.
Mit Zitat antworten
  #9 (permalink)  
Alt 22-06-2009, 13:56
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Standard

Ja.. natürlich soll der Client die Daten entschlüsselt sehen.

Hab mir das mit nem Versteckten und Sichtbaren Textfeld vorgestellt


Also quasi...

$_POST["guthaben"] = entschlüsseln($_POST["guthaben"] )

<TEXTFELD name"guthaben_visible" value "echo $_POST["guthaben"]"> Die Anzeige im Fenster

anschließend wieder verschlüsseln

$_POST["guthaben"] = verschlüsseln($_POST["guthaben"] )

<TEXTFELD name"guthaben" value "echo $_POST["guthaben"]"> Das is dann ein Hidden Textfeld das die Werte anschließend übergeben soll...

Mit der Methode wollt ich das machen. Also quasi ein verschlüsseltes und sichtbare Textfeld.

Mir gings eigentlich jetzt nur darum wie ich die jetzt verschlüssele mit der Klasse, da ich nicht weiß wie ich sie anwende.

Geändert von Maanee9 (22-06-2009 um 13:59 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 22-06-2009, 13:59
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Und wieso speicherst du die Werte nicht einfach in der Session, anstatt sie ständig verschlüsselt dem Browser zu schicken, damit er sie wieder an der Server zurück schickt? Ist doch nur ein unnötiger Umweg.
Mit Zitat antworten
  #11 (permalink)  
Alt 22-06-2009, 14:07
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Standard

Mit Sessions hab ich mich momentan leider noch nicht beschäftigt.. die kommen bei mir erst demnächst dran und darum weiß ich natürlich jetzt leider nicht wie es mit Session funktioniert.

Mir gehts halt im Prinzip wirklich nur darum Daten nur in Verschlüsselter Form weiter zugeben. Ob mit POST, GET, COOKIE oder Session.

Ich möchte halt einfach nur Funktionen die es möglichst gut verschlüsselen und auch wieder entschlüsselen.
Darum hab ich mir auch die obige Klasse runtergeladen, wobei ich leider nicht weiß wie ich damit die Variblen verschlüssle.

Zusätzlich noch vielen dank für die schnellen Antworten... ich fühl mich nämlich grad wie ne Nervensäge. Kenn mich halt leider noch nicht so aus.
Mit Zitat antworten
  #12 (permalink)  
Alt 22-06-2009, 14:25
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Wie auch immer, Verschlüsseln ist hier keine Lösung. Wenn dem Benutzer das Ergebnis des Spiels nicht passt, drückt er auf den Back-Button im Browser und hat wieder die alten Werte im Formular stehen. Dies kann er dann so lange wiederholen, bis er was gewinnt.
Mit Zitat antworten
  #13 (permalink)  
Alt 22-06-2009, 14:39
jmc
 PHP Junior
Links : Onlinestatus : jmc ist offline
Registriert seit: Mar 2006
Beiträge: 868
jmc befindet sich auf einem aufstrebenden Ast
Standard

Man kann auch einfach das read-only input abändern und hat 10^xxx.
Ausserdem, die Variabeln $_POST, $_COOKIE und $_GET solltest du ebenfalls als read-only betrachten. Wenn du error_reporting auf E_ALL hast dann kriegst du auch einen Hinweis darauf, wenn ich mich richtig erinnere.
Mit Zitat antworten
  #14 (permalink)  
Alt 22-06-2009, 15:03
Maanee9
 Registrierter Benutzer
Links : Onlinestatus : Maanee9 ist offline
Registriert seit: Jun 2009
Beiträge: 29
Maanee9 befindet sich auf einem aufstrebenden Ast
Standard

hmm.. ok.
Stimmt. Das mit dem Zurück hab ich so noch gar nicht bedacht sowie eingies was zuvor gesagt wurde.

Aber im Prinzip sollts eigentlich nurn Beispiel sein was ich eigentlich vorhab da das Glückomat-ding eh mehr ne kleine Übung war in der ich nur was ausprobieren wollte.
Von daher besteht mein eigentlich Problem immer noch.

Ich weiß einfach nicht wie ich mit dieser Funktion was verschlüssle...
Also wie ich die Funktion aufrufe.

Ich habe jetzt Beispielsweise.

$guthaben = 5;
dann will ich als nächstes
$crypt_guthaben = verschlüsseln($guthaben);
Nur leider weiß ich jetzt nicht wie das mit der Klasse jetzt funktioniert.
(Zur Wiederholung| Klasse is per Include einfach eingebunden).

Natürlich soll das auch in die Andere richtung funktionieren.

Ich brauch eigentlich bloß kurz ein HOW-TO, wie ich mit dem Verschlüsselungsding jetzt umgehen soll.
Mit Zitat antworten
  #15 (permalink)  
Alt 22-06-2009, 15:12
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Maanee9 Beitrag anzeigen
Nur leider weiß ich jetzt nicht wie das mit der Klasse jetzt funktioniert.
Dann lern es:

PHP: Classes and Objects (PHP 5) - Manual
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Anfänger problem Rolandbar ASP, PERL, CGI, C und alles andere 0 11-01-2007 14:57
Anfänger-Problem SLik PHP Developer Forum 5 29-07-2006 16:31
Anfänger Problem wantti PHP Developer Forum 11 17-07-2004 17:45
php-Anfänger-Problem harry712 PHP Developer Forum 10 04-12-2003 14:59
anfänger-problem ? pirat SQL / Datenbanken 3 01-02-2003 11:53

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:54 Uhr.