mcrypt und iv?

Im Netz habe ich in der base64_encode Doku ein par Beispiele gefunden, die wohl ein ähnliches Problem mit base64 hatten. Die Lösun sah da so aus

function urlsafe_b64encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}


Ich habs noch nicht ausprobeirt, abe rkann sowas überhaupt sauber laufen? Wenn ich es dann späetr zrück dekodiere, würden sich dann die Zeichen nicht mit eventuell anderen gleichen Zeichen überschneiden******!

Das Problem tritt wohl auch beim iv Key auf und da bei dem md5 solche Sonderzeichen nicht auftauchen, geht md5 wohl.
 
Zuletzt bearbeitet:
MD5 ist allerdings ein Hash, das kann man nicht rückgängig machen. Es geht nur in eine Richtung. Das solltest du evtl. bedenken.

Warum machst du eigentlich noch ein base64 drauf? Hat das einen bestimmten Grund?
 
Hallo,

das ist ja egal mit demm5 der ix Key wird ja nur zum übertragen gebraucht und muss nicht entschlüsselt werden. base64 hatte ich verwendet, weil ich dachte damit das Üebrtragunsgproblem zu lösen. Wobei das mit dem md5 eh wohl nur nötig war, weil es eben Probleme bei der richtigen Übertragung von diesen Sonderzeichen wie +,.. auftraten. Das scheint die Krux zu sein. Irgendwie verschwinden immer teile des Zeichensatzes.
 
So sieht die Rückgabe aus, aktuell mit urlencoded

%194%2A%C1%03%DF%E7gbOU%B9%92bD%5C%3E%C8%C1JY%E3r%BB%D7%DFu%CAk%28%CD%C0%11%A5%5B%94IA%9C%F2%A71%91u%A1%82k%96i%B4%BB%F7%84%83%F9%AF%99g%10%96%0F%F1%3B%27K7%C8mk%11%C3%2C%84%EB%7C%EC%99%1F%91F%0F1%11P%1FD%B74%23%2B%F6%3F%5C%B1%D5L%99%EB%F7Xg%C0%AF%9EP%98%27K%81%E5%A3%86%A7bN%A2%40%12%91%D3%CF%BE%98%3EE%84%CE%91%A1%FF%F5%DE%16%AAq%93%E4x%AD%F1q%28G%1BBG%DA%D3%E3%CA%F8%DC%CA%E2%1B%15%18%D7%E9%3C%89%A4%08%9BjZ%2C%18%9C%247%DF%95Rw%A0%88%3DZ%BB%F6%C8%24%C1%07%C3%DE%17%CE%A1%3C%C5%13%96%99%89%5B%E4%AB%8C%B9%29%D5%BB%E9%98%95%D5%7E%A8%8F%AEZ%92%9Du%FD%CB%BE%A5%08%A4%02%16pmz%1BnUz%5E2%5D%09i%219%9BZ%A8%A9%C2%1E%60QH%9B%85%27U%E4%11%CCJ%09Z%AE3%9E%80aV%A7E%11%F6%9F%DE%5D%22%E7%0A%2F%93%22%5D%E4z%F0%96%BAT%CB%22%01%BB%8Dt5m%DB%7E8c%F6%BE%1A%93%C0%BDF%ECF%F2%DA%B4%CDs%001Y%06%D2%00%8ACG%C1%2A%B0%E4%F8%FC%E7%1F%2Bh%BE%27%FEE%E1w%FD%CF%F0%E3%92%3Bl4E%D7%1D6%29%BA%2BJ%12%C0y%98%ED%1E%CF.+%C8%A3O%D9i%07%91%F7%10%C4%C9%8C%F2%D9%7C%87Gi%0A%D5%18%D7%12_%0D%91%E1O%24%1B%FC%A7f%96X%F5%FF%010%B5%EDA%B5%7C%1F%C7%5E%C3O%E8%BD%88%7E%00%ED%9F%9F%F9ht%B5%9D2%7BsH%D1%5C%3E%C0%23%0D%CCz%28Ns%E3%F7q%0A%DD%8B%DCP%A91%A6%3B%D9%06LA%DC%A3%80%22%97%CAkq%1B%DDS%CD%038%BCa%40%DAKu%DF%13%8B%A5%00K%9D%FA%24%8F%A0%E1%F2%0E%07e%F1%26o%F4%F0%95%B7l%D4%18%C2B%E8%CB8.%15%19%AA%BB%DCIA%98V%2F%0BN1%17%DE%C4%E9%9C%F2D%EE%E6%1EG%03z%BBU%E6%9D%88%D8Cm%DA%2C%DB%1E%5C%0F%E0%C4%93n%D1%00%D4%8A%3A6%81%23%7F%8B%B2%03%BC%F5%D2%04%89%02%D4%0E%D5%AB%D3%FC%D3%24%80%40%E6l%17O%B0%05ed%B0%04k%2C%A9%E4%8As%8A%AF%9Ez%BE%BD%19%7Dg%DB4%DB2%0DE%C79%EC%3A%D4%CC%C1%854%92-%A3%D9%1E%24%18%CE6%DC%DF%AAG%B8%8A%A4%C76%0Bx_%88%E1%1A%8D%B0j%D2%E3%EAb%80%19%3EN%3F%0D-%2B%1D%BF%C1%FB%F6%D9%FCZ%8F%B5%09%86%15%DA%A0F%AF%07GvU%C5f%1F%25%DBN%86_o%EDM%F0%C4%F3%8EI%DD%0D%F47%06%BB%7Fnsf%9D%E2%10V%82%0CI%9C%EE%3E%A4%7C-%9E%D7%E5%01%0D%7F%C3%FB%C5l%C3%E5RJ%83%01%CFN%9D%AB%D8%D3%EA%14_%C5m%16%D2%F9%15%80%1B%C6K%C6%05%C8%12%9CPv%85%D6N%E1%97%A6Mi%5B2K04%40%B9g%FD%06%C4%26I%EB%FA%1Fv%24%ECh%BC%9A%85%A9%0E%B2sv%3D%A7RF%3Dl5%3C%C9ax%5B%2C%CF%A1%9C%B4%CF%E81%12%A9%D6%21n%1B%2F%82%C5%CC%02%DF%824H%97%05%80p%EA%F5%87%E0%A9E%5B%90%AD%8F%3EK%7E%046%D8%FF%EC%40%B1%EB%3A%99w%9E_W%E2%04%9A%3F%E1T%26%B9%C6%3F%9A%29%E0%F9%12%F1%00%D3%24A%8C%60%E6%BB%1C

Roh: 4*

Encoded: 4*

Decrypt: {"form":{"selectSS6r

Fertig:
 
Hallo,

das hatte ich ja ursprünglich probiert, das erzeugt die leichen Probleme:(

Kann ich mir jetzt fast nicht vorstellen. Ich hab das mal probiert:

PHP:
<?php
class crypter {
	public function __construct() {
	}

	public static function encrypt($string,$key,$iv) {
		$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CFB, $iv);
		return $encrypted;
	}

	public static function decrypt($string,$key,$iv) {
		$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CFB, $iv);
		return $decrypted;
	}

	public static function getIV() {
		// Gibt Probleme bei der Übertragung, md5 klappts
		//$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CFB), MCRYPT_RAND);
		srand();
		$iv = md5(date("Y-m-d H:i:s")+microtime()+rand(1,999999999999999));
		return $iv;
	}
}

$data = "Hallo Welt";

$key = "asdf345jaödgljln43t";

$iv = crypter::getIV();

$data = crypter::encrypt($data, $key, $iv); 

$data = urlencode($data);

echo "$data\n";

$data = urldecode($data);

$data = crypter::decrypt($data, $key, $iv); 

echo "$data\n";
?>

Funktioniert gut.

Kann man eigentlich irgendwie rausfinden, welche Kodierung das aktuelle Dokument hat? utf8,..?


Allerdings sollte es UTF8 sein

Ja, kann man. Wenn du Windows hast, solltest du das über ein entsprechendes Tool wie z.B. Notepad++ oder Eclipse rausfinden können.
 
Kann ich mir jetzt fast nicht vorstellen. Ich hab das mal probiert:

PHP:
<?php
class crypter {
	public function __construct() {
	}

	public static function encrypt($string,$key,$iv) {
		$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CFB, $iv);
		return $encrypted;
	}

	public static function decrypt($string,$key,$iv) {
		$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_CFB, $iv);
		return $decrypted;
	}

	public static function getIV() {
		// Gibt Probleme bei der Übertragung, md5 klappts
		//$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CFB), MCRYPT_RAND);
		srand();
		$iv = md5(date("Y-m-d H:i:s")+microtime()+rand(1,999999999999999));
		return $iv;
	}
}

$data = "Hallo Welt";

$key = "asdf345jaödgljln43t";

$iv = crypter::getIV();

$data = crypter::encrypt($data, $key, $iv); 

$data = urlencode($data);

echo "$data\n";

$data = urldecode($data);

$data = crypter::decrypt($data, $key, $iv); 

echo "$data\n";
?>

Funktioniert gut.



Ja, kann man. Wenn du Windows hast, solltest du das über ein entsprechendes Tool wie z.B. Notepad++ oder Eclipse rausfinden können.

ICh dachte eher an eine php Funktion:)

So, ich habs jetzt so gelöst

str_replace(array('+','/','='),array('---','___','xxx'),$data);
str_replace(array('---','___','xxx'),array('+','/','='),$data);


Scheint zu funktioneiren
 
Zurück