


Ich sehe oft, dass einige Freunde in der Gruppe nach dem Entschlüsselungsprozess von Miniprogramm-Benutzerdaten fragen, daher habe ich vor, ein Tutorial zum Entschlüsseln sensibler Daten von Miniprogramm-Benutzern zu schreiben.
Der Verschlüsselungsprozess ist am abgeschlossen Der WeChat-Server und der Entschlüsselungsprozess sind abgeschlossen. Das Applet und sein eigener Server sind abgeschlossen, d >
Base64-Kodierung und -Dekodierung{ "openId": "OPENID", "nickName": "NICKNAME", "gender": GENDER, "city": "CITY", "province": "PROVINCE", "country": "COUNTRY", "avatarUrl": "AVATARURL", "unionId": "UNIONID", "watermark": { "appid":"APPID", "timestamp":TIMESTAMP } }
- AES-Algorithmus, Füllmodus, Offset-Vektor
- Sitzung
_
Schlüssel Sitzungsschlüssel und Speichern und Abrufen Die oben genannten 3 Punkte sind sehr wichtig für das Verst?ndnis des Entschlüsselungsprozesses .
Den offiziellen Dokumenten zufolge habe ich den allgemeinen Entschlüsselungsprozess wie folgt geregelt:
Der Applet-Client ruft wx auf. login, Der Rückruf enth?lt
js_code.
Senden Sie dann js_code an Server A (Entwicklerserver Server A initiiert eine Anfrage an den WeChat-Server mit den Parametern js_code, appId, Secretkey und grant_type im Austausch für die openid und session_key (). Sitzungsschlüssel).
Nachdem Server A den session_key erhalten hat, generiert er eine Zufallszahl, die wir 3rd_session nennen, mit 3rdSessionId als Schlüssel und session_key + openid als Wert- Cache
bis
redis oder - memcached
; Da das WeChat-Team nicht empfiehlt, den session_key direkt im Netzwerk zu übertragen, muss der Entwickler einen eindeutigen Schlüssel generieren, der dem session_key zugeordnet werden kann. Seine Funktion ist: Geben Sie die 3rdSessionId an den Client zurück und behalten Sie den Anmeldestatus des Miniprogramms bei.
- Nachdem der Client die 3rdSessionId erhalten hat, wird sie im Speicher zwischengespeichert
- Der Client sendet die verschlüsselten Daten, die 3rdSessionId und den Offset zusammen an Server A
- Server A erh?lt den Sitzungsschlüssel aus dem Cache basierend auf der 3rdSessionId
- Verwenden Sie AES, um die verschlüsselten Daten auf Server A zu entschlüsseln, um die Entschlüsselung sensibler Benutzerdaten zu erreichen
- Konzentrieren Sie sich auf die drei Links 6, 7 und 8 .
- AES-Entschlüsselung drei Parameter:
- Finden Sie den Sitzungsschlüssel und die OpenID des Benutzers über 3rdSessionId.
- Schlüssel aesKey
- Offset-Vektor iv
- Serverseitiger Entschlüsselungsprozess:
- Der Chiffretext und der Offset-Vektor werden vom Client an den Server gesendet. Die beiden Parameter führen Base64_decode durch
Vorgang auf der Serverseite.
Rufen Sie den Sitzungsschlüssel aus dem Cache basierend auf der 3rdSessionId ab und dekodieren Sie den Sitzungsschlüssel mit Base64, um aesKey und den aes-Schlüssel zu erhalten.
Rufen Sie die AES-Entschlüsselungsmethode auf, der Algorithmus ist AES-128-CBC und die Daten werden mit PKCS#7 gefüllt. - Im Folgenden wird der Entschlüsselungsprozess anhand eines Miniprogrammbeispiels erl?utert:
1 Melden Sie sich mit WeChat an und erhalten Sie Benutzerinformationen
3. Entschlüsselungsanforderung einleiten
var that = this;wx.login({success: function (res) { //微信js_code that.setData({wxcode: res.code}); //獲取用戶信息 wx.getUserInfo({ success: function (res) { //獲取用戶敏感數(shù)據(jù)密文和偏移向量 that.setData({encryptedData: res.encryptedData}) that.setData({iv: res.iv}) } })}})
4 . AES-Entschlüsselungskerncode
var httpclient = require('../../utils/httpclient.js') VAR that = this//httpclient.req(url, data, method, success, fail)httpclient.req( 'http://localhost:8090/wxappservice/api/v1/wx/getSession', { apiName: 'WX_CODE', code: this.data.wxcode }, 'GET', function(result){ var thirdSessionId = result.data.data.sessionId; that.setData({thirdSessionId: thirdSessionId}) //將thirdSessionId放入小程序緩存 wx.setStorageSync('thirdSessionId', thirdSessionId) }, function(result){ console.log(result) });
Der Endeffekt ist wie folgt:
//httpclient.req(url, data, method, success, fail)httpclient.req('http://localhost:8090/wxappservice/api/v1/wx/decodeUserInfo', { apiName: 'WX_DECODE_USERINFO', encryptedData: this.data.encryptedData, iv: this.data.iv, sessionId: wx.getStorageSync('thirdSessionId') }, 'GET', function(result){ //解密后的數(shù)據(jù) console.log(result.data) }, function(result){ console.log(result) });Wenn Ihr Miniprogramm nicht an die offene WeChat-Plattform gebunden ist, sind dies die entschlüsselten Daten nicht den Unionid-Parameter enthalten
/** * 解密用戶敏感數(shù)據(jù) * @param encryptedData 明文 * @param iv 加密算法的初始向量 * @param sessionId 會(huì)話ID * @return */@Api(name = ApiConstant.WX_DECODE_USERINFO)@RequestMapping(value = "/api/v1/wx/decodeUserInfo", method = RequestMethod.GET, produces = "application/json")public Map<String,Object> decodeUserInfo(@RequestParam(required = true,value = "encryptedData")String encryptedData, @RequestParam(required = true,value = "iv")String iv, @RequestParam(required = true,value = "sessionId")String sessionId){ //從緩存中獲取session_key Object wxSessionObj = redisUtil.get(sessionId); if(null == wxSessionObj){ return rtnParam(40008, null); } String wxSessionStr = (String)wxSessionObj; String sessionKey = wxSessionStr.split("#")[0]; try { AES aes = new AES(); byte[] resultByte = aes.decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(sessionKey), Base64.decodeBase64(iv)); if(null != resultByte && resultByte.length > 0){ String userInfo = new String(resultByte, "UTF-8"); return rtnParam(0, userInfo); } } catch (InvalidAlgorithmParameterException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return rtnParam(50021, null); }Bindung des Miniprogramms WeChat Open Platform ConnectionZusammenfassung
public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException { initialize(); try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); Key sKeySpec = new SecretKeySpec(keyByte, "AES"); cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化 byte[] result = cipher.doFinal(content); return result; } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (NoSuchPaddingException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); } catch (IllegalBlockSizeException e) { e.printStackTrace(); } catch (BadPaddingException e) { e.printStackTrace(); } catch (NoSuchProviderException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
Von den entschlüsselten Daten sind die einzigen sensiblen Daten appid; ich pers?nlich bin der Meinung, dass openid nicht sensibel ist Daten, und jeder Benutzer generiert eine für jedes offizielle Konto
Sicher openid ist nur im Umfang von appid verfügbar. Es sei denn, Ihre App-ID ist ebenfalls durchgesickert.
Damit die App-ID aus den entschlüsselten Daten abgerufen werden kann. Was ist der Zweck des WeChat Mini-Programmteams? Wie ich bereits sagte, ist openid nichts ohne appid. Zusammen werden openid und appid verwendet, um Miniprogrammentwicklern die Unterscheidung und Isolierung von Benutzern zwischen verschiedenen Miniprogrammanwendungen zu erleichtern und gleichzeitig das WeChat-Benutzersystem mit dem dritten zu kombinieren -Parteien-Gesch?ftssystem.
1. Quellcode der WeChat-Plattform herunterladen
2 ??>3.
WeChat Lala Takeaway 2.2.4 entschlüsselt die Open-Source-Version des WeChat Rubik's Cube-QuellcodesDas obige ist der detaillierte Inhalt vonEinführung in die WeChat-Entwicklung (6) Benutzerdatenentschlüsselung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Java-Entwicklung: Für die Implementierung der Datenverschlüsselung und -entschlüsselung sind spezifische Codebeispiele erforderlich. Einführung: Im Kontext des modernen Informationszeitalters ist Datensicherheit immer wichtiger geworden. Für Entwickler ist der Schutz der Sicherheit von Benutzerdaten eine wesentliche F?higkeit. Die Datenverschlüsselung und -entschlüsselung ist eines der wichtigsten Mittel zur Datensicherheit. In diesem Artikel wird erl?utert, wie die Java-Sprache zum Implementieren der Datenverschlüsselung und -entschlüsselung verwendet wird, und es werden spezifische Codebeispiele aufgeführt. 1. Einführung in den Datenverschlüsselungsalgorithmus Datenverschlüsselung bezieht sich auf die Verarbeitung von Originaldaten durch einen bestimmten Algorithmus, sodass sie ohne verarbeitet werden k?nnen

Für die Ver- und Entschlüsselung von Daten in Python sind spezifische Codebeispiele erforderlich. Datenverschlüsselung und -entschlüsselung sind sehr wichtige Konzepte im Bereich der Informationssicherheit. In praktischen Anwendungen müssen wir h?ufig sensible Daten verschlüsseln, um unbefugten Zugriff und Informationsverlust zu verhindern. Python ist eine leistungsstarke Programmiersprache, die eine Fülle von Bibliotheken und Funktionen zur Implementierung von Datenverschlüsselungs- und -entschlüsselungsvorg?ngen bereitstellt. In diesem Artikel werden einige h?ufig verwendete Verschlüsselungsalgorithmen und spezifische Codebeispiele für die Implementierung der Datenverschlüsselung und -entschlüsselung in Python vorgestellt. 1. MD5

überblick über die Verwendung von Laravel zur Implementierung von Datenverschlüsselungs- und -entschlüsselungsfunktionen: In modernen Internetanwendungen ist es sehr wichtig, die Sicherheit der Benutzerdaten zu schützen. Eine der wichtigen Sicherheitsma?nahmen ist die verschlüsselte Speicherung sensibler Daten. Laravel bietet als beliebtes PHP-Framework Unterstützung für verschiedene Verschlüsselungs- und Entschlüsselungsfunktionen. In diesem Artikel wird erl?utert, wie Sie die Verschlüsselungsbibliothek von Laravel zum Ver- und Entschlüsseln von Daten verwenden. Schritt 1: Laravel installieren Stellen Sie zun?chst sicher, dass Larav lokal oder auf dem Server installiert ist

PHP ist eine Open-Source-Skriptsprache, die in der Webentwicklung und serverseitigen Programmierung, insbesondere in der WeChat-Entwicklung, weit verbreitet ist. Heutzutage beginnen immer mehr Unternehmen und Entwickler, PHP für die WeChat-Entwicklung zu verwenden, da es sich zu einer wirklich leicht zu erlernenden und benutzerfreundlichen Entwicklungssprache entwickelt hat. Bei der WeChat-Entwicklung sind die Nachrichtenverschlüsselung und -entschlüsselung ein sehr wichtiges Thema, da sie die Datensicherheit betreffen. Bei Nachrichten ohne Verschlüsselungs- und Entschlüsselungsmethoden k?nnen Hacker leicht an die Daten gelangen, was eine Bedrohung für Benutzer darstellt.

Methoden und Techniken zur Datenverschlüsselung und -entschlüsselung mithilfe von PHP-Arrays Zusammenfassung: Datenverschlüsselung spielt eine wichtige Rolle in der Informationssicherheit. In diesem Artikel werden Methoden und Techniken zur Verwendung von PHP-Arrays zur Implementierung der Datenverschlüsselung und -entschlüsselung vorgestellt, um die Sicherheit vertraulicher Informationen zu schützen. Einleitung In der modernen Gesellschaft haben Fragen der Netzwerksicherheit zunehmend Aufmerksamkeit erregt. Um die Sicherheit sensibler Informationen zu schützen, ist die Datenverschlüsselung eine g?ngige Methode. PHP-Array ist eine leistungsstarke und flexible Datenstruktur, die zum Speichern und Bearbeiten von Daten verwendet werden kann. Durch die Speicherung sensibler Daten im PHP-Array

Im modernen Internetbereich ist Datensicherheit schon immer ein wichtiges Thema. Bei der übermittlung, Speicherung und Verarbeitung von Daten müssen wir verschiedene technische Mittel einsetzen, um die Datensicherheit zu gew?hrleisten. Eines der wichtigsten technischen Mittel ist die Datenverschlüsselung. Gin ist ein Web-Framework, das auf der Go-Sprache basiert. Seine Einfachheit, Benutzerfreundlichkeit, Effizienz und Stabilit?t wurden von vielen Entwicklern gesch?tzt. In diesem Artikel wird erl?utert, wie Sie mit dem Gin-Framework Datenverschlüsselungs- und -entschlüsselungsfunktionen implementieren. Zun?chst müssen wir einige Grundkenntnisse über Verschlüsselungsalgorithmen verstehen.

Bei der Entwicklung ?ffentlicher WeChat-Konten wird h?ufig die Abstimmungsfunktion verwendet. Die Voting-Funktion ist eine tolle M?glichkeit für Nutzer, sich schnell an Interaktionen zu beteiligen und ist darüber hinaus ein wichtiges Tool für die Durchführung von Veranstaltungen und Meinungsumfragen. In diesem Artikel erfahren Sie, wie Sie PHP zur Implementierung der WeChat-Abstimmungsfunktion verwenden. Holen Sie sich die Autorisierung des offiziellen WeChat-Kontos. Zuerst müssen Sie die Autorisierung des offiziellen WeChat-Kontos einholen. Auf der ?ffentlichen WeChat-Plattform müssen Sie die API-Adresse des ?ffentlichen WeChat-Kontos, des offiziellen Kontos und des dem ?ffentlichen Konto entsprechenden Tokens konfigurieren. Bei unserer Entwicklung mit der PHP-Sprache müssen wir den von WeChat offiziell bereitgestellten PH verwenden

Implementierung der Datenverschlüsselung und -entschlüsselung mithilfe von RPC-Diensten auf Basis von ThinkPHP6 und Swoole Da Netzwerksicherheitsprobleme immer wichtiger werden, wird die Notwendigkeit der Datenverschlüsselung und -entschlüsselung immer wichtiger. In Webanwendungen kann die Kommunikation zwischen verschiedenen Servern durch die RPC-Technologie (Remote Procedure Call) erreicht werden, und die Datenverschlüsselung und -entschlüsselung kann die Sicherheit der Daten w?hrend des Kommunikationsprozesses gew?hrleisten. In diesem Artikel wird erl?utert, wie Sie einen RPC-Dienst basierend auf dem ThinkPHP6- und Swoole-Framework implementieren und Datenverschlüsselung und -entschlüsselung hinzufügen.
