Prefácio
Escrevi uma introdução à criptografia e descriptografia do conteúdo de configuração do centro do centro de configuração: "Arquitetura de MicrosService Build MicrosService: Spring Cloud: Centro de Configuração Distribuída (criptografia e descriptografia)". Neste artigo, há um problema: quando o conteúdo criptografado contém alguns caracteres especiais, como = e +, ao usar o comando curl localhost:7001/encrypt -d mencionado no artigo anterior para criptografar e descriptografar, os caracteres especiais serão perdidos.
Por exemplo, a seguinte situação:
$ CURL LOCALHOST: 7001/ENCRYPT -D EF34+5EDO = A34C76C4DDAB706FBCAE0848639A8ED9D612B003503030542C98997E084A7427 $ CURLHOST: 7001 A34C76C4DDAB706FBCAE0848639A8ED9D612B003503030542C98997E084A7427EF34 5EDO
Pode -se observar que, após a criptografia e a descriptografia, alguns personagens especiais são perdidos. Como eu tive um pequeno truque aqui antes, tirei um tempo para escrevê -lo e compartilhá -lo. Espero que seja útil para você se eu encontrar o mesmo problema.
Causas e soluções para o problema
De fato, o motivo dessa questão é explicado especificamente no documento oficial. Só posso me culpar por ser muito descuidado. Os detalhes são os seguintes:
Se você estiver testando como este com o CURL, use-Data-urlencode (em vez de -d) ou defina um tipo de conteúdo explícito: text/plana para garantir que o CURL codifique os dados corretamente quando existem caracteres especiais ('+' é particularmente complicado).
Portanto, ao usar o CURL, a postura correta deve ser:
$ curl localhost:7001/encrypt -H 'Content-Type:text/plain' --data-urlencode "eF34+5edo="335e618a02a0ff3dc1377321885f484fb2c19a499423ee7776755b875997b033$ curl localhost:7001/decrypt -H 'Content-Type:text/plain' --data-urlencode "335e618a02a0ff3dc1377321885f484fb2c19a499423ee7776755b875997b033"eF34+5edo=
Então, como jogamos quando escrevemos ferramentas para criptografar e descriptografar? Aqui está um exemplo de okhttp para referência:
private string Encrypt (valor da string) {String url = "http: // localhost: 7001/criprypt"; Solicitação de solicitação = new request.builder () .url (url) .post (requestbody.create (mediatype.parse ("text/plana"), value.getBytes ())) .build (); CALL CHAMADA = OKHTTPCLIENT.NEWCALL (solicitação); Resposta resposta = call.execute (); ResponseBody ResponseBody = Response.body (); RETORNO RESPOSTOBOBY.STRING ();} String privada descripto (valor da String) {String url = "http: // localhost: 7001/descriptografar"; Solicitação de solicitação = new request.builder () .url (url) .post (requestbody.create (mediatype.parse ("text/plana"), value.getBytes ())) .build (); CALL CHAMADA = OKHTTPCLIENT.NEWCALL (solicitação); Resposta resposta = call.execute (); ResponseBody ResponseBody = Response.body (); Retornar ResponseBody.String ();}Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.