Prefacio
He escrito una introducción al cifrado y el descifrado del contenido de configuración del Centro de configuración: "Arquitectura de microservicio de compilación Spring Cloud: Centro de configuración distribuida (cifrado y descifrado)". En este artículo, hay un problema: cuando el contenido encriptado contiene algunos caracteres especiales como = y +, cuando se usa el comando curl localhost:7001/encrypt -d mencionado en el artículo anterior para encriptar y descifrar, se encontrarán caracteres especiales para perderse.
Por ejemplo, la siguiente situación:
$ curl localhost: 7001/encrypt -d EF34+5EDO = A34C76C4DDAB706FBCAE0848639A8E0ED9D612B0035030542C989997E084A7427 $ CURL LOCALHOST: 7001/Decrypt --d A34C76C4DDAB706FBCAE0848639A8E0ED9D612B0035030542C98997E084A7427EF34 5EDO
Se puede ver que después del cifrado y el descifrado, se pierden algunos caracteres especiales. Como tenía un pequeño truco aquí antes, me tomé el tiempo para escribirlo y compartirlo. Espero que te sea útil si encuentro el mismo problema.
Causas y soluciones al problema
De hecho, la razón de este problema se explica específicamente en el documento oficial. Solo puedo culparme por ser demasiado descuidado. Los detalles son los siguientes:
Si está probando así con Curl, use --data-urlencode (en lugar de -d) o establece un tipo de contenido explícito: texto/simple para asegurarse de que Curl codifica los datos correctamente cuando hay caracteres especiales ('+' es particularmente complicado).
Por lo tanto, cuando se usa Curl, la postura correcta debe ser:
$ curl localhost: 7001/encrypt -h 'type de contenido: text/sencillo' --data-urlencode "ef34+5edo =" 335e618a02a0ff3dc1377321885f484fb2c19a49423ee7777755b8759997b0333 $ curl $ curl Localhost: 7001/Decrypt -h 'Content-Type: Text/Plain' --Data-URLENCODE "335E618A02A0FF3DC1377321885F484FB2C19A4999423EE7777755B875997B033" EF34+5EDO = =
Entonces, ¿cómo jugamos cuando escribimos herramientas para cifrar y descifrar? Aquí hay un ejemplo de OKHTTP como referencia:
Private String CiCrypt (Valor de cadena) {String url = "http: // localhost: 7001/encrypt"; Solicitud solicitud = new Solic.Builder () .URL (url) .post (requestbody.create (mediAtype.parse ("text/sencillo"), value.getBytes ())) .Build (); Llamar a la llamada = okhttpclient.newCall (solicitud); Respuesta de respuesta = call.exCute (); ResponseBody ResponseBody = Response.Body (); return responseBody.String ();} private String Decrypt (Valor de cadena) {String url = "http: // localhost: 7001/Decrypt"; Solicitud solicitud = new Solic.Builder () .URL (url) .post (requestbody.create (mediAtype.parse ("text/sencillo"), value.getBytes ())) .Build (); Llamar a la llamada = okhttpclient.newCall (solicitud); Respuesta de respuesta = call.exCute (); ResponseBody ResponseBody = Response.Body (); return responseBody.string ();}Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.