Ich habe versucht, zwei Funktionen zu erstellen, eine zum Verschlüsseln von Parametern und eine andere zum Entschlüsseln von ihnen und ich habe ein Problem. Manchmal, wenn ich versuche, ein Wort/eine Zahl zu entschlüsseln, schlägt die Entschlüsselung fehl. Nur manchmal, also weiß ich nicht, welcher der Fehler sein kann. Möchten Sie meine Funktionen schreiben, wenn jemand will, um sie überprüfen:Fehler beim Verschlüsseln-Entschlüsseln PHP
function url_base64_decode($str){
return base64_decode(strtr($str,
array(
'.' => '+',
'-' => '=',
'~' => '/'
)
));
}
function url_base64_encode($str){
return strtr(base64_encode($str),
array(
'+' => '.',
'=' => '-',
'/' => '~'
)
);
}
function mdecrypt($input){
$key = '4oF9B2NWXbmvIC5nNLLTbnmr5knkEBNBcrJt9m3xM3kjFyCZc3QAZbolXomtaIQSBBDDxxxAAAjTPV';
$input = trim(chop($this->url_base64_decode($input)));
$td = mcrypt_module_open ('tripledes', '', 'ecb', '');
$key = substr(md5($key),0,24);
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
mcrypt_generic_init ($td, $key, $iv);
$decrypted_data = mdecrypt_generic ($td, $input);
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
return trim(chop($decrypted_data));
}
function mencrypt($input) {
$key = '4oF9B2NWXbmvIC5nNLLTbnmr5knkEBNBcrJt9m3xM3kjFyCZc3QAZbolXomtaIQSBBDDxxxAAAjTPV';
$key = substr(md5($key),0,24);
$td = mcrypt_module_open ('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
mcrypt_generic_init ($td, $key, $iv);
$encrypted_data = mcrypt_generic ($td, $input);
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
return trim(chop($this->url_base64_encode($encrypted_data)));
}
ich eine Schleife erstellt Zahlen zu verschlüsseln, und zum Beispiel nicht die Zahl 63 auf decrypt:
- verschlüsselt: pECnbC3qkwg- entschlüsselt: 60
- verschlüsselt: yOo70iZ7LKk- entschlüsselten: 61
- verschlüsselt: GRkGYosxwO4- entschlüsselten: 62
- verschlüsselt: AJGJzNep3YU- entschlüsselten: + ÕϤȿß
- verschlüsselt: wvT3n6F ~ xkU- entschlüsselt: 64
- verschlüsselt: 7p.gxcfLFcE- entschlüsselt: 65
Jeder weiß, was soll ich tun?
Vielen Dank an alle
Woher wissen Sie, dass '-' durch' = 'ersetzt werden sollte und nicht' -'? –
Ich würde nicht empfehlen, eine RYO-Verschlüsselungslösung tbh: http://stackoverflow.com/questions/9262109/php-simplet-two-way-encryption PHP kann auch GPG unterstützen, aber das ist möglicherweise nicht für Ihren Anwendungsfall geeignet: http://php.net/manual/en/ref.gnupg.php – CD001
Es ist am besten nicht mcrypt zu verwenden, es ist abandonware, wurde nicht in Jahren aktualisiert und unterstützt nicht Standard PKCS # 7 (geb. PKCS # 5) Padding, nur Nicht-Standard-Null-Padding, das nicht einmal mit Binärdaten verwendet werden kann. mcrypt hatte viele herausragende Fehler (https://sourceforge.net/p/mcrypt/bugs/), die auf das Jahr 2003 zurückgehen. Stattdessen sollten Sie [defuse] verwenden (https://github.com/defuse/php-encryption), es wird beibehalten und ist korrekt. – zaph