PHP envoyer des données cryptées via l'URL

Je suis en train d'envoyer des données chiffrées sur l'url d'un autre site (à l'aide de file_get_contents("anotherUrl.php?hash=$encryptedString"). Le problème est que, parfois, le chiffrement contient des caractères spéciaux, comme +, ce qui provoque le déchiffrement à l'échec.

Voici mon chiffrement /déchiffrement méthodes:

public function encrypt($string, $key)
{
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}

public function decrypt($encrypted, $key)
{
    return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "
public function encrypt($string, $key)
{
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}
public function decrypt($encrypted, $key)
{
return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}
"
); }

Voici un exemple chiffré chaîne de caractères qui contient un +, et je devine que cela provoque le déchiffrement à l'échec.

oWCrVPaS+5GbxcQFc0fulUk/zRAkDD60av4zlPiWskE=

Aucune idées de comment je pourrais résoudre ce problème? J'ai essayé de faire urlencode() et urldecode() sur la table de hachage, cependant cela semble aussi être la cause de chiffrement à briser. Est-il un moyen de modifier l'algorithme de chiffrement de l'obtenir pour seulement l'url de retour en sécurité des caractères?

Juste à côté de la question, pourquoi êtes-vous en effectuant deux successives md5 opérations sur la clé? Qu'espérez-vous réaliser?
En fait, j'ai copié la fonction exactement comme l'est d'une autre réponse ici, je n'ai pas apporté aucune modification.
Ehh... je ne vois pas l'intérêt de qui. Si la clé est faible (j'.e de ne pas partir d'un cryptage fort générateur de nombre aléatoire), vous devez pas être à l'aide de md5 comme une clé-le renforcement de l'algorithme (voir PBKDF#2, bcrypt ou scrypt). Si votre clé est déjà forte, vous êtes juste de gaspiller de cycles de processeur.
Où avez-vous la cryptographie code? Il n'est pas sécurisé.

OriginalL'auteur Click Upvote | 2013-11-16