Kata pengantar
Saya telah menulis pengantar enkripsi dan dekripsi konten konfigurasi Pusat Konfigurasi: "Spring Cloud Build Arsitektur Microservice: Pusat Konfigurasi Terdistribusi (Enkripsi dan Dekripsi)". Dalam artikel ini, ada masalah: Ketika konten terenkripsi berisi beberapa karakter khusus seperti = dan +, saat menggunakan perintah curl localhost:7001/encrypt -d yang disebutkan dalam artikel sebelumnya untuk mengenkripsi dan mendekripsi, karakter khusus akan ditemukan hilang.
Misalnya, situasi berikut:
$ CURL LOCALHOST: 7001/Encrypt -D EF34+5Edo = A34C76C4DDAB706FBCAE0848639A8E0ED9D612B0035030542C9897E084A7427 $ CURL LOCALHOST: 7001/DECRY084A74427 $ A34C76C4DDAB706FBCAE0848639A8E0ED9D612B0035030542C9897E084A7427EF34 5EDO
Dapat dilihat bahwa setelah enkripsi dan dekripsi, beberapa karakter khusus hilang. Karena saya memiliki sedikit trik di sini sebelumnya, saya meluangkan waktu untuk menuliskannya dan membagikannya. Saya harap ini akan membantu Anda jika saya mengalami masalah yang sama.
Penyebab dan solusi untuk masalah
Faktanya, alasan untuk masalah ini secara khusus dijelaskan dalam dokumen resmi. Saya hanya bisa menyalahkan diri sendiri karena terlalu ceroboh. Dengan rincian sebagai berikut:
Jika Anda menguji seperti ini dengan curl, maka gunakan--data-urlencode (bukan -d) atau atur tipe konten eksplisit: teks/polos untuk memastikan curl mengkodekan data dengan benar ketika ada karakter khusus ('+' sangat rumit).
Oleh karena itu, saat menggunakan ikal, postur yang benar harus:
$ curl localhost: 7001/enkripsi -h 'tipe konten: teks/polos' --Data-urlencode "EF34+5Edo =" 335E618A02A0FF3DC1377321885F487FB2C19A4999423E776767B2B2C19A4999423EE7767675957B2C19A4999423776767197B2C19997B2C19A4994237767 localhost: 7001/decrypt -h 'tipe konten: teks/polos' --Data-urlencode "335E618A02A0FF3DC137321885F484FB2C19A494234776755B8759997B03333333333333334477767555B8759999997B033333333333333.1
Jadi, bagaimana kita bermain saat kita menulis alat untuk mengenkripsi dan mendekripsi? Berikut adalah contoh OKHTTP untuk referensi:
private string encrypt (nilai string) {string url = "http: // localhost: 7001/encrypt"; Permintaan permintaan = new request.builder () .url (url) .post (requestbody.create (mediatype.parse ("text/polos"), value.getbytes ()))) .build (); Panggilan panggilan = okhttpclient.newcall (permintaan); Respons respons = call.execute (); Responsebody responsebody = response.body (); return responseBody.string ();} private string decrypt (nilai string) {string url = "http: // localhost: 7001/decrypt"; Permintaan permintaan = new request.builder () .url (url) .post (requestbody.create (mediatype.parse ("text/polos"), value.getbytes ()))) .build (); Panggilan panggilan = okhttpclient.newcall (permintaan); Respons respons = call.execute (); Responsebody responsebody = response.body (); return responsebody.string ();}Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.