Ojo, codificar no es igual a encriptar.
La codificación en Base64 no es nada segura, porque tiene vuelta conocida.
Sin embargo un algoritmo bueno de encriptación solo tiene vuelta para quien conoce la clave, o frase para desencriptar.
Aquí hay algo útil:
http://php.net/crypt
Con respecto del problema de codificación, y el "+", sería bueno que mostrases todo el proceso que haces para llevar el valor de un lugar a otro.
Mi teoría es que el carácter + corresponde al espacio en la codificación especial de la URLs, y es por eso que no lo toma, no sabría decirte mas pero creo que se acerca un poco.
PDTA: recomiendo que mejor uses un buen algoritmo de encriptación y no Base64.