Préface
J'ai écrit une introduction au cryptage et au déchiffrement du contenu de configuration du centre de configuration: "Spring Cloud Build MicroService Architecture: Centre de configuration distribué (cryptage et déchiffrement)". Dans cet article, il y a un problème: lorsque le contenu chiffré contient des caractères spéciaux tels que = et +, lors de l'utilisation de la commande curl localhost:7001/encrypt -d mentionné dans l'article précédent pour crypter et décrypter, les caractères spéciaux seront perdus.
Par exemple, la situation suivante:
$ curl localhost: 7001 / Encrypt -d ef34 + 5edo = a34c76c4ddab706fbcae0848639a8ed9d612b0035030542c98997e084a7427 $ curl localhost: 7001 / decrypt -D A34C76C4DDAB706FBCAE0848639A8E0ED9D612B0035030542C98997E084A7427EF34 5EDO
On peut voir qu'après le cryptage et le décryptage, certains caractères spéciaux sont perdus. Comme j'ai déjà eu un petit truc ici, j'ai pris le temps de l'écrire et de le partager. J'espère que cela vous sera utile si je rencontre le même problème.
Causes et solutions au problème
En fait, la raison de ce problème est spécifiquement expliquée dans le document officiel. Je ne peux que me blâmer d'être trop insouciant. Les détails sont les suivants:
Si vous testez comme celui-ci avec Curl, utilisez - Data-Urlencode (au lieu de -D) ou définissez un type de contenu explicite: texte / ordinaire pour vous assurer que Curl code correctement les données lorsqu'il y a des caractères spéciaux ('+' est particulièrement délicat).
Par conséquent, lors de l'utilisation de Curl, la bonne posture doit être:
$ curl localhost: 7001 / Encrypt -h 'contenu-type: text / plain' --data-urlencode "ef34 + 5edo =" 335e618a02a0ff3dc1377321885f484fb2c19a499423ee7776755b875997b033 $ Curl LocalHost: 7001 / Decrypt -H 'Content-Type: Text / PLAIN' --Data-Urlencode "335E618A02A0FF3DC1377321885F484FB2C19A499423EE7776755B875997B033" Ef34 + 5EDO =
Alors, comment jouons-nous lorsque nous écrivons des outils pour crypter et décrypter? Voici un exemple d'OKHTTP pour référence:
Private String Encrypt (String Value) {String url = "http: // localHost: 7001 / Encrypt"; Request request = new request.builder () .url (url) .post (requestbody.create (mediaType.Parse ("text / plain"), value.getBytes ()))) .Build (); Appel appel = okhttpclient.newCall (demande); Réponse réponse = call.exécute (); ResponseBody ResponseBody = Response.Body (); return réponsebody.string ();} private string decrypt (String Value) {String url = "http: // localhost: 7001 / decrypt"; Request request = new request.builder () .url (url) .post (requestbody.create (mediaType.Parse ("text / plain"), value.getBytes ()))) .Build (); Appel appel = okhttpclient.newCall (demande); Réponse réponse = call.exécute (); ResponseBody ResponseBody = Response.Body (); return réponsebody.string ();}Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.