Pengesahan tandatangan dan penyulitan serta penyahsulitan data pengguna API applet WeChat
Pengesahan tandatangan dan penyulitan serta penyahsulitan data pengguna
Pengesahan tandatangan data
Untuk memastikan keselamatan data pengguna dikembalikan oleh antara muka terbuka, WeChat akan menandatangani data teks biasa. Pembangun boleh melakukan pengesahan tandatangan pada paket data berdasarkan keperluan perniagaan untuk memastikan integriti data.
- Algoritma pengesahan tandatangan melibatkan session_key pengguna diperolehi melalui proses log masuk wx.login, dan hubungan yang sepadan dengan status log masuk aplikasi itu sendiri dikekalkan.
- Apabila mendapatkan data dengan memanggil antara muka (seperti wx.getUserInfo), antara muka akan mengembalikan rawData dan tandatangan pada masa yang sama, di mana tandatangan = sha1( rawData + session_key )
- Pemaju akan menghantar tandatangan dan rawData kepada pembangun pelayan untuk pengesahan. Pelayan menggunakan session_key sepadan pengguna untuk mengira tandatangan tandatangan2 menggunakan algoritma yang sama, dan membandingkan tandatangan dan tandatangan2 untuk mengesahkan integriti data.
Sebagai contoh, pengesahan data wx.getUserInfo:
rawData dikembalikan oleh antara muka:
{ "nickName": "Band", "gender": 1, "language": "zh_CN", "city": "Guangzhou", "province": "Guangdong", "country": "CN", "avatarUrl": "http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0" }
Kunci sesi pengguna:
rreeeJadi, rentetan yang digunakan untuk tandatangan ialah: hasilnya ialah
HyVFkGl5F5OQWJZZaNzBBg==
algoritma penyahsulitan data yang disulitkan
Jika antara muka melibatkan data sensitif (seperti openId dan unionId dalam
), kandungan teks biasa antara muka tidak akan mengandungi data sensitif ini. Jika pembangun perlu mendapatkan data sensitif, mereka perlu menyahsulit secara simetriData Terselit (Data Terselit)wx.getUserInfo
yang dikembalikan oleh antara muka. Algoritma penyahsulitan adalah seperti berikut:
- teks sifir sasaran penyahsulitan simetri ialah Base64_Decode(Data yang disulitkan),
- Aeskey kunci penyahsulitan simetri = Base64_Decode(session_key), aeskey ialah 16 bait
- Vektor awal iv bagi algoritma penyahsulitan simetri akan dikembalikan antara muka data simetri WeChat secara rasmi menyediakan kod sampel dalam berbilang bahasa pengaturcaraan (klik untuk memuat turun). Nama antara muka adalah konsisten untuk setiap jenis bahasa. Kaedah panggilan boleh merujuk kepada contoh.
Selain itu, untuk aplikasi mengesahkan kesahihan data, kami akan menambah tera air (watermark) data pada data sensitif
perihalan parameter tera air:seperti antara muka http: //www.w3cschool.cn /weixinapp/weixinapp-open.html Tera air dalam data sensitif:
{"nickName":"Band","gender":1,"language":"zh_CN","city":"Guangzhou","province":"Guangdong","country":"CN","avatarUrl":"http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"}HyVFkGl5F5OQWJZZaNzBBg==
Nota:
data yang disulitkan (Data)dan algoritma penyulitan yang sepadan akan ditamatkan penggunaannya pada logik lama.