• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Codierung einer Datei

Status
Für weitere Antworten geschlossen.

Tuturios

Neues Mitglied
Hallo!

Ich bin schon lange auf der Suche nach einer Möglichkeit Dateien von meinem Browsergame, das ich zur zeit entwickle, zu codieren, damit niemand auf die Idee kommt diese Angaben zu ändern.
Allerdings habe ich im PHP-Manual nur md5() als Codierungstyp gefunden. Allerdings kenne ich keinen Weg das mit PHP zu decodieren.

Ich habe da auch mal was CRC32 gehört, aber nicht wirklich was gefunden. Es geht mir halt darum, dass dort Arrays zu Charakter-Grundinformationen gespeichert sind, die per PHP wieder decodiert und verarbeitet werden sollen.

Freue mich schon jetzt über konstruktive Antworten.

Gruß, Tuturios
 
da fällt mir so auf die schnelle nur
PHP: base64_encode - Manual <-> PHP: base64_decode - Manual
ein.

Ansonsten bastel dir doch was eigenes, z.B.
PHP:
function encode($text) {
    $array = split("a",strrev($text));
    asort($array);
    $string = "";
    foreach($array as $strpart)
        $string .= $strpart."a";
    $string = substr($string,0,strlen($string)-1);
    $text = base64_decode(base64_decode($string));
    return($text);
}
function decode($text) {
    $string = base64_encode(base64_encode($text));
    $array = split("a",$text);
    asort($array);
    $string = "";
    foreach($array as $strpart)
        $string .= $strpart."a";
    $text = substr($string,0,strlen($string)-1);
    return (strrev($text));
}
 
Ich denke ich werde das base64_encode()/bas64_decode() wählen.

@Frank:
Ich verstehe dein Script nicht ganz, weil ich mich mit Array-Funktionen nicht so sehr gut auskenne, werde es mir aber bei Gelegenheit näher anschauen. Danke dafür.

@Slibbo:
Werde ich machen, danke.
 
Ich bin schon lange auf der Suche nach einer Möglichkeit Dateien von meinem Browsergame, das ich zur zeit entwickle, zu codieren, damit niemand auf die Idee kommt diese Angaben zu ändern.
Ich denke ich werde das base64_encode()/bas64_decode() wählen.

Du widersprichst dir denn base64 ist durch die gegebene Funktion
sehr leicht zu entschlüsseln und wird zudem noch leicht an den ein
bzw. zwei Gleichheitszeichen am ende erkannt. Daher ist von dieser
Methode abzuraten.
 
Ich hab nochmal was gebastelt, sollte eigentlich ganz gut sein. Wenn man nicht weis wie es verschlüsselt ist, sollte man, denke ich, das nicht rausbekommen dürfen
PHP:
class crypt {
	function crypt($object) {
		$this->object = $object;
	}
	function Encode() {
		$string = serialize($this->object);
		$reverse = strrev($string);
		$encoded = base64_encode($reverse);
		$doubleencoded = base64_encode($encoded);
		$splits = split("a",$doubleencoded);
		$parted = "";
		for($i=(count($splits)-1);$i>=0;$i--) {
			$parted .= $splits[$i]."a";
		}
		$reconnected = substr($parted,0,strlen($parted)-1);
		$reversed2 = strrev($reconnected);
		$lastencoded = base64_encode($reversed2);
		return $lastencoded;
	}
	function Decode() {
		$lastencoded = base64_decode($this->object);
		$reversed2 = strrev($lastencoded);
		$splits = split("a",$reversed2);
		$parted = "";
		for($i=(count($splits)-1);$i>=0;$i--) {
			$parted .= $splits[$i]."a";
		}
		$reconnected = substr($parted,0,strlen($parted)-1);
		$doubleencoded = base64_decode($reconnected);
		$encoded = base64_decode($doubleencoded);
		$reverse = strrev($encoded);
		$string = unserialize($reverse);
		return $string;
	}
}
Damit lassen sich alle sachen verschlüsseln / entschlüsseln. Egal ob ein Array, ein mehrdimensionales Array, ein String, ein Integer oder sonstwas. Es funktioniert in beide Richtungen und ist leicht anzuwenden.

Beispielsweise folgendes Array zum verschlüsseln:
Code:
array("Apfel","Birne","Weintraube","lecker"=>"Obstsalat")
Wird wie folgt verschlüsselt:
PHP:
$myarray = array("Apfel","Birne","Weintraube","lecker"=>"Obstsalat");
$crypt = new crypt($myarray);
echo $crypt->Encode();
Das Ergebnis ist:
Code:
elJsWmFKaGxWWEZXZFM1MllvWmxiWnhtUzU5a2V3cG1UMmswUWl4bVR5RUdiSzVXUzMwa2JQVnpicWxFVUtKell3NEVXWk5uUkhSV2FQbFdTVkZXZTFjbFdwTkhWaFpUUzY5a2V3UlZUMzltYXQ5RWV6cDNZMlVsYTlVVWJQQnpiNlZHY3dSVVQzMGtiUEZ6YnFsa1FDNW1Xc2hYYkpkeg==
Wer nun meint zu erkennen dass es base64 ist (wegen den ==) und versucht es zu entschlüsseln erhält:
Code:
zRlZaJhlVXFWdS52YoZlbZxmS59kewpmT2k0QixmTyEGbK5WS30kbPVzbqlEUKJzYw4EWZNnRHRWaPlWSVFWe1clWpNHVhZTS69kewRVT39mat9Eezp3Y2Ula9UUbPBzb6VGcwRUT30kbPFzbqlkQC5mWshXbJdz
Das Script dagegen kann den Wert erfolgreich zurückwandeln
PHP:
$crypted = "elJsWmFKaGxWWEZXZFM1MllvWmxiWnhtUzU5a2V3cG1UMmswUWl4bVR5RUdiSzVXUzMwa2JQVnpicWxFVUtKell3NEVXWk5uUkhSV2FQbFdTVkZXZTFjbFdwTkhWaFpUUzY5a2V3UlZUMzltYXQ5RWV6cDNZMlVsYTlVVWJQQnpiNlZHY3dSVVQzMGtiUEZ6YnFsa1FDNW1Xc2hYYkpkeg==";
$crypt = new crypt($crypted);
var_dump($crypt->Decode());
Ergebnis
Code:
array(4) { [0]=> string(5) "Apfel" [1]=> string(5) "Birne" [2]=> string(10) "Weintraube" ["lecker"]=> string(9) "Obstsalat" }
Nachteil ist natürlich, dass die verschlüsselten Strings länger sind als die Plain-Objekte. Allerdings sollte diese Verschlüsselung sicher genug sein, sodass, wenn du die Funktion nicht preis gibst, man die daten nicht entschlüsseln können sollte.
 
Zuletzt bearbeitet:
@Frank:
Ok, danke. Hab kapiert. :-D

@Slibbo:
Der "Schutz" dient nur vor Nuubs im Programmieren, dieganz zufällig auf nen Pfad stoßen. Für die Pros hab ich schon eine PLanung, allerdings ist das mit einem eigenen Logarithmus, den ich hier aber jetzt natürlich nicht preisgebenw erde. :wink:
 
das ist doch stumpf, da du das ergebniss dem anderen mitgibst, somit kann jeder die funktion auf die schnelle umschreiben 1-2 min, ...

benutz lieber ein code obfusicator oder sowas wie zend guard!

truck mmcache *oder so* ist 4 free...

phk oder phar schaffen auch verwirung :)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben