Предисловие
Я написал введение в шифрование и расшифровку конфигурации конфигурации: «Архитектура микросервиса Spring Cloud Build Architecture: распределенный центр конфигурации (шифрование и дешифрование)». В этой статье возникает проблема: когда зашифрованный контент содержит некоторые специальные символы, такие как = и +, при использовании команды curl localhost:7001/encrypt -d упомянутые в предыдущей статье, для шифрования и расшифровки, будут обнаружены специальные символы.
Например, следующая ситуация:
$ curl localhost: 7001/incrypt -d ef34+5edo = a34c76c4ddab706fbcae0848639a8e0ed9d612b003503050542c98997e084a7427 $ curl A34C76C4DDAB706FBCAE0848639A8E0ED9D612B003503050542C98997E084A7427EF34 5EDO
Видно, что после шифрования и дешифрования некоторые специальные персонажи теряются. Поскольку у меня была небольшая уловка здесь раньше, я нашел время, чтобы написать это и поделиться этим. Я надеюсь, что вам будет полезно, если я столкнусь с той же проблемой.
Причины и решения проблемы
Фактически, причина этого вопроса специально объясняется в официальном документе. Я могу только винить себя в том, что я слишком небрежен. Детали следующие:
Если вы тестируете так с Curl, то используйте-data-urlencode (вместо -d) или установите явный тип контента: текст/равнина, чтобы убедиться, что Curl правильно кодирует данные, когда есть особые символы ('+' особенно хитрый).
Следовательно, при использовании curl должна быть правильная осанка:
$ curl localhost: 7001/incrypt -h '' content-type: text/plain '-data-urlencode "ef34+5edo =" 335e618a02a0ff3dc1377321885f484fb2c19a499423e7777555b8759b2c19a499423e7777555997b2c19a499423e777755597b2c19a499423e7777555997b2c19a49923 Localhost: 7001/decrypt -h '' Content-Type: Text/Plain '-Data-Urlencode "335E618A02A0FF3DC1377321885F484FB2C19A499423EE7777555B875997B033" EF34+5EDO = = 5EDO = = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO = 5EDO.
Итак, как мы играем, когда пишем инструменты для шифрования и расшифровки? Вот пример OKTTP для справки:
Приватная строка Encrypt (string value) {string url = "http: // localhost: 7001/encrypt"; Запрос запроса = new Request.Builder () .Url (url) .post (requestBody.create (mediaType.parse ("text/plain"), value.getbytes ()))) .build (); Call Call = okhttpclient.newcall (запрос); Ответ ответа = call.execute (); Ответ -обратный обратный ответ = ответ.body (); return responsebody.string ();} частная строка decrypt (string value) {string url = "http: // localhost: 7001/decrypt"; Запрос запроса = new Request.Builder () .Url (url) .post (requestBody.create (mediaType.parse ("text/plain"), value.getbytes ()))) .build (); Call Call = okhttpclient.newcall (запрос); Ответ ответа = call.execute (); Ответ -обратный обратный ответ = ответ.body (); return responsebody.string ();}Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.