国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ WeChat アプレット WeChatの開(kāi)発 WeChat開(kāi)発入門 (6) ユーザーデータの復(fù)號(hào)化

WeChat開(kāi)発入門 (6) ユーザーデータの復(fù)號(hào)化

May 24, 2017 am 09:38 AM

グループ內(nèi)の何人かの友人がミニ プログラム ユーザー データの復(fù)號(hào)化プロセスについて質(zhì)問(wèn)しているのをよく見(jiàn)かけます。そのため、ミニ プログラム ユーザーの機(jī)密データの復(fù)號(hào)化に関するチュートリアルを書(shū)く予定です。

暗號(hào)化プロセスは WeChat サーバー上で完了し、復(fù)號(hào)化プロセスはミニプログラムと獨(dú)自のサーバー上で完了します。つまり、次のデータがencryptDataから取得されます:

{
    "openId": "OPENID",
    "nickName": "NICKNAME",
    "gender": GENDER,
    "city": "CITY",
    "province": "PROVINCE",
    "country": "COUNTRY",
    "avatarUrl": "AVATARURL",
    "unionId": "UNIONID",
    "watermark":
    {
        "appid":"APPID",
        "timestamp":TIMESTAMP
    }
}

準(zhǔn)備知識(shí):

  1. Base64エンコードとデコード

  2. AESアルゴリズム、パディングモード、オフセットベクトル

  3. session_keyセッションキー、および保存方法と取得方法

上記の3點(diǎn)は、復(fù)號(hào)プロセスを理解するために非常に重要です。

公式ドキュメントに従って、一般的な復(fù)號(hào)プロセスを次のように整理しました:

WeChat開(kāi)発入門 (6) ユーザーデータの復(fù)號(hào)化

  1. アプレットクライアントは wx.login を呼び出し、コールバックには js_code が含まれます。

  2. 次に、js_code をサーバー A (開(kāi)発者サーバー) に送信します。サーバー A は、ユーザーの openid と session_key (セッション キー) と引き換えに、js_code、appId、secretkey、およびgrant_type パラメーターを使用して WeChat サーバーへのリクエストを開(kāi)始します。

  3. サーバー A が session_key を取得した後、3rdSessionId をキーとして、session_key + openid を値として使用して 3rd_session と呼ばれる亂數(shù)を生成しますredis または memcached にキャッシュ します。直接推奨 session_key はネットワーク経由で送信され、開(kāi)発者は session_key に関連付ける一意のキーを生成します。その機(jī)能は次のとおりです:

    1. 3rdSessionId をクライアントに返し、ミニ プログラムのログイン ステータスを維持します。

    2. 3rdSessionId を通じてユーザー session_key と openid を検索します。

  4. クライアントが 3rdSessionId を取得すると、それはストレージにキャッシュされます。

  5. ユーザーの機(jī)密データの encryptedData は、wx.getUserIinfo を通じて取得できます。

  6. クライアントは、encryptedData、3rdSessionId、オフセットを一緒にサーバーAに送信します

  7. サーバーAは、3rdSessionIdに基づいてキャッシュからsession_keyを取得します

  8. AESを使用してサーバーAのencryptedDataを復(fù)號(hào)化し、ユーザーの機(jī)密データ

3 つのリンク 6、7、および 8 に焦點(diǎn)が當(dāng)てられています。

AES 復(fù)號(hào)化の 3 つのパラメーター:

  • ciphertext encryptedData

  • key aesKey

  • offset Vector iv

サーバー側(cè)の復(fù)號(hào)化プロセス:

  1. ciphertextオフセット ベクトルはクライアントによって提供されます。 クライアントそれをサーバーに送信し、サーバー上の 2 つのパラメーターは Base64_decode

    デコード です。

  2. 3rdSessionId に基づいてキャッシュから session_key を取得し、session_key を Base64_decode して aesKey、aes キーを取得します。

  3. aes復(fù)號(hào)化メソッドを呼び出します。アルゴリズムはAES-128-CBCで、データはPKCS#7で埋められます。

以下は、ミニプログラムの例を使用して復(fù)號(hào)プロセスを説明します:

1. WeChat にログインし、ユーザー情報(bào)を取得します

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})        }
    })}})

2. コードを使用して 3rdSessionId を交換します

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)  });

3.

//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)  });

4. サーバー側(cè)の復(fù)號(hào)化実裝 (java)

/** * 解密用戶敏感數(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);
}

5. AES 復(fù)號(hào)化コア コード

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();
    }
最終的な効果は次のとおりです:


WeChat開(kāi)発入門 (6) ユーザーデータの復(fù)號(hào)化

ミニ プログラムが WeChat オープン プラットフォームにバインドされていない場(chǎng)合、復(fù)號(hào)化されたデータには Unionid パラメータが含まれていません

ミニ プログラムは WeChat Open Platform プラットフォーム接続にバインドされています

概要

復(fù)號(hào)化されたデータから、機(jī)密データは appid のみであると私は個(gè)人的に感じています。各公開(kāi)アカウントの

safeopenid; openid は appid 內(nèi)でのみ使用可能です。 appid も漏洩していない限り。

その後、復(fù)號(hào)化されたデータから appid を取得できます。WeChat ミニ プログラム チームの目的は何ですか?前に述べたように、openid と appid は、ミニ プログラム開(kāi)発者が異なるミニ プログラム アプリケーション間でユーザーを區(qū)別して分離するのを容易にするために一緒に使用され、同時(shí)に WeChat ユーザー システムと 3 つ目のユーザー システムを組み合わせることができます。 -パーティービジネスシステム。

したがって、機(jī)密データの復(fù)號(hào)化の主な用途は、それを復(fù)號(hào)化してクライアントに送り返すことではなく、WeChat のユーザー情報(bào)をサーバー側(cè)で獨(dú)自のビジネスに統(tǒng)合することだと思います。

【関連推奨事項(xiàng)】

1.

WeChatパブリックアカウントプラットフォームのソースコードダウンロード

2.

WeChat投票ソースコード

3.

WeChat Lala Takeaway 2.2.4の復(fù)號(hào)化されたオープンソースバージョンWeChatルービックキューブのソースコード

以上がWeChat開(kāi)発入門 (6) ユーザーデータの復(fù)號(hào)化の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java 開(kāi)発: データの暗號(hào)化と復(fù)號(hào)化を?qū)g裝する方法 Java 開(kāi)発: データの暗號(hào)化と復(fù)號(hào)化を?qū)g裝する方法 Sep 20, 2023 am 08:46 AM

Java 開(kāi)発: データの暗號(hào)化と復(fù)號(hào)化を?qū)g裝する方法、特定のコード例が必要です はじめに: 現(xiàn)代の情報(bào)時(shí)代の文脈において、データ セキュリティはますます重要になっています。開(kāi)発者にとって、ユーザー データのセキュリティを保護(hù)する方法は必須のスキルです。データの暗號(hào)化と復(fù)號(hào)化は、データ セキュリティの重要な手段の 1 つです。この記事では、Java 言語(yǔ)を使用してデータの暗號(hào)化と復(fù)號(hào)化を?qū)g裝する方法と、具體的なコード例を紹介します。 1. データ暗號(hào)化アルゴリズムの紹介 データ暗號(hào)化とは、元のデータを特定のアルゴリズムで処理し、暗號(hào)化を行わずに処理できるようにすることを指します。

Python でデータを暗號(hào)化および復(fù)號(hào)化する方法 Python でデータを暗號(hào)化および復(fù)號(hào)化する方法 Oct 18, 2023 am 10:15 AM

Python でデータを暗號(hào)化および復(fù)號(hào)化する方法、具體的なコード例が必要です データの暗號(hào)化と復(fù)號(hào)化は、情報(bào)セキュリティの分野において非常に重要な概念です。実際のアプリケーションでは、多くの場(chǎng)合、不正アクセスや情報(bào)漏洩を防ぐために機(jī)密データを暗號(hào)化する必要があります。 Python は、データの暗號(hào)化と復(fù)號(hào)化の操作を?qū)g裝するための豊富なライブラリと関數(shù)を提供する強(qiáng)力なプログラミング言語(yǔ)です。この記事では、一般的に使用される暗號(hào)化アルゴリズムと、Python でデータの暗號(hào)化と復(fù)號(hào)化を?qū)g裝するための具體的なコード例を紹介します。 1.MD5

Laravel を使用してデータの暗號(hào)化および復(fù)號(hào)化機(jī)能を?qū)g裝する方法 Laravel を使用してデータの暗號(hào)化および復(fù)號(hào)化機(jī)能を?qū)g裝する方法 Nov 03, 2023 pm 04:19 PM

Laravel を使用してデータの暗號(hào)化および復(fù)號(hào)化機(jī)能を?qū)g裝する方法の概要: 最新のインターネット アプリケーションでは、ユーザー データのセキュリティを保護(hù)することが非常に重要です。重要なセキュリティ対策の 1 つは、機(jī)密データの暗號(hào)化された保管です。 Laravel は、人気のある PHP フレームワークとして、さまざまな暗號(hào)化および復(fù)號(hào)化機(jī)能のサポートを提供します。この記事では、Laravelの暗號(hào)化ライブラリを使用してデータを暗號(hào)化および復(fù)號(hào)化する方法を紹介します。ステップ 1: Laravel をインストールする まず、Larav がローカルまたはサーバーにインストールされていることを確認(rèn)します。

PHP WeChat 開(kāi)発: メッセージの暗號(hào)化と復(fù)號(hào)化を?qū)g裝する方法 PHP WeChat 開(kāi)発: メッセージの暗號(hào)化と復(fù)號(hào)化を?qū)g裝する方法 May 13, 2023 am 11:40 AM

PHP は、Web 開(kāi)発およびサーバーサイド プログラミング、特に WeChat 開(kāi)発で広く使用されているオープン ソースのスクリプト言語(yǔ)です?,F(xiàn)在、ますます多くの企業(yè)や開(kāi)発者が WeChat 開(kāi)発に PHP を使用し始めています。これは、PHP が本當(dāng)に學(xué)びやすく、使いやすい開(kāi)発言語(yǔ)となっているためです。 WeChat の開(kāi)発では、メッセージの暗號(hào)化と復(fù)號(hào)化はデータのセキュリティに関わるため、非常に重要な問(wèn)題となります。暗號(hào)化と復(fù)號(hào)化の方法を持たないメッセージの場(chǎng)合、ハッカーは簡(jiǎn)単にデータを入手でき、ユーザーに脅威を與える可能性があります。

PHP 配列を使用したデータの暗號(hào)化と復(fù)號(hào)化の方法と技術(shù) PHP 配列を使用したデータの暗號(hào)化と復(fù)號(hào)化の方法と技術(shù) Jul 16, 2023 pm 04:02 PM

PHP 配列を使用したデータの暗號(hào)化と復(fù)號(hào)化の方法とテクニック 概要: データの暗號(hào)化は、情報(bào)セキュリティにおいて重要な役割を果たします。この記事では、機(jī)密情報(bào)のセキュリティを保護(hù)するために、PHP 配列を使用してデータの暗號(hào)化と復(fù)號(hào)化を?qū)g裝する方法とテクニックを紹介します。はじめに 現(xiàn)代社會(huì)において、ネットワークセキュリティの問(wèn)題はますます注目を集めています。機(jī)密情報(bào)のセキュリティを保護(hù)するには、データ暗號(hào)化が一般的な方法です。 PHP 配列は、データの保存と操作に使用できる強(qiáng)力で柔軟なデータ構(gòu)造です。機(jī)密データを PHP 配列に保存することによって

Gin フレームワークを使用してデータの暗號(hào)化および復(fù)號(hào)化機(jī)能を?qū)g裝する Gin フレームワークを使用してデータの暗號(hào)化および復(fù)號(hào)化機(jī)能を?qū)g裝する Jun 23, 2023 am 08:12 AM

現(xiàn)代のインターネット分野では、データ セキュリティが常に重要なテーマとなっています。データを送信、保存、処理する際には、データのセキュリティを確保するためにさまざまな技術(shù)的手段を使用する必要がありますが、最も重要な技術(shù)的手段の 1 つはデータの暗號(hào)化です。 Gin は Go 言語(yǔ)をベースにした Web フレームワークで、そのシンプルさ、使いやすさ、効率性、安定性が多くの開(kāi)発者に支持されています。この記事では、Gin フレームワークを使用してデータの暗號(hào)化と復(fù)號(hào)化機(jī)能を?qū)g裝する方法を紹介しますので、一緒に學(xué)びましょう。まず、暗號(hào)化アルゴリズムの基本的な知識(shí)を理解する必要があります。

PHP WeChat開(kāi)発:投票機(jī)能の実裝方法 PHP WeChat開(kāi)発:投票機(jī)能の実裝方法 May 14, 2023 am 11:21 AM

WeChat パブリック アカウントの開(kāi)発では、投票機(jī)能がよく使用されます。投票機(jī)能はユーザーが気軽に交流に參加できるほか、イベントの開(kāi)催や意見(jiàn)調(diào)査などにも重要なツールです。この記事では、PHPを使用してWeChatの投票機(jī)能を?qū)g裝する方法を紹介します。 WeChat公式アカウントの認(rèn)証を取得する まずはWeChat公式アカウントの認(rèn)証を取得する必要があります。 WeChatパブリックプラットフォームでは、WeChatパブリックアカウント、公式アカウント、およびパブリックアカウントに対応するトークンのAPIアドレスを設(shè)定する必要があります。 PHP言語(yǔ)を使用した開(kāi)発の過(guò)程では、WeChatが公式に提供するPHを使用する必要があります

PHP を使用して WeChat マス メッセージング ツールを開(kāi)発する PHP を使用して WeChat マス メッセージング ツールを開(kāi)発する May 13, 2023 pm 05:00 PM

WeChat の人気に伴い、マーケティング ツールとして WeChat を使用し始める企業(yè)が増えています。 WeChat グループ メッセージング機(jī)能は、企業(yè)が WeChat マーケティングを行うための重要な手段の 1 つです。ただし、手動(dòng)送信のみに頼ると、マーケターにとって非常に時(shí)間と労力がかかる作業(yè)になります。したがって、WeChat マス メッセージング ツールを開(kāi)発することが特に重要です。この記事では、PHP を使用して WeChat マス メッセージング ツールを開(kāi)発する方法を紹介します。 1. 準(zhǔn)備作業(yè) WeChat マス メッセージング ツールを開(kāi)発するには、次の技術(shù)點(diǎn)を習(xí)得する必要があります。 PHP WeChat パブリック プラットフォーム開(kāi)発の基礎(chǔ)知識(shí) 開(kāi)発ツール: Sub

See all articles