Llevo rato devanándome los sesos y no encuentro el error que me surge... vamos a ver:
Tengo una pequeña función PHP que codifica un stream de manera simétrica (es decir, luego le puedo aplicar el descifrado con la misma key y funciona).
Esta función puede (normalmente lo hace) devolver caracteres ASCII por encima de 127 (por tanto los trato como UTF-8).
Para ver un ejemplo rápido, aquí un poco de código:
Código PHP:
Ver original
$GCall = new GL('myUser', 'myKey');//instancio la clase $GCall->getToken();//operación intermedia, para obtener autenticación file_put_contents($tempPath, $GCall->query($q));//el resultado de $GCall->query($q) es una cadena codificada, que a fin de cuentas es una consulta a una base de datos (el resultado codificado es un XML) /* funcionamiento: $GCall->decrypt($url) recibe la URL del fichero codificado - en este caso el que está situado en $tempPath hace un file_get_contents($url), para obtener el contenido codificado lo decodifica y lo devuelve */ file_put_contents($finalPath, $GCall->decrypt('http://miweb.com/temp.dat'));//colocamos en $finalPath el contenido decodificado
Esto me funciona perfectamente; testeado un sinfín de veces.
Dejo un extracto del texto codificado:
Código:
Hasta aquí todo marcha como la seda...(Codificación ISO-8859-1) @Bzvr5„mt|jsr@$:4E0(gwdshlppC7ƒ|h69&CA>Muxƒugwu$|pnwyR0pv}
El problema empieza ahora:
Desde JAVA, llamo al codificador, le paso una query, pero al decodificar no lo hace de la manera esperada.
Obviamente el proceso es algo distinto:
Código:
Sin embargo, el fichero intermedio es diferente...Cuando la llamada es desde JAVA, mi función PHP lo detecta (mediante un parámetro pasado) y el resultado intermedio lo guarda en un fichero con un nombre de conveniencia (es decir, tiene un formato específico). Al llamar al decodificador, si es una llamada JAVA, obtengo el contenido del fichero anterior, lo decodifico, y lo guardo en un fichero final (también con un nombre de conveniencia).
Código:
Y de ahí ya el XML resultante (como pensaréis) es ilegible...(Codificación ISO-8859-1) @Bzvr5„mt|jsr@$:4E0(gwdshlppC7Æ’|h69&CA>MuxÆ’ugwu$|pnwyR (Codificación UTF-8) @Bzvr5„mt|jsr@$:4E0(gwdshlppC7ƒ|h6
Veo que el problema es de codificación en mi PHP; cuál es el problema es algo que ya escapa a mí... llevo tantas horas ofuscado con esto que ya no veo que hacer... quizás vosotros veis la solución en un par de minutos...
No se si hará falta algo más de info., en cualquier caso pedid y veré que puedo hacer.
Un saludo