在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當前位置:雨林木風下載站 > 應用軟件教程 > 詳細頁面

對于微信小程序中用戶數據解密的介紹

對于微信小程序中用戶數據解密的介紹

更新時間:2025-09-25 文章作者:未知 信息來源:網絡 閱讀次數:

微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一...
微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。小程序是一種不用下載就能使用的應用,也是一項門檻非常高的創新,經過將近兩年的發展,已經構造了新的小程序開發環境和開發者生態。
這篇文章主要介紹了微信小程序 用戶數據解密詳細介紹的相關資料,需要的朋友可以參考下

微信小程序 用戶數據解密

官方指引圖:

關于微信小程序中用戶數據解密的介紹

引導圖一步一步操作

1、獲取code

onLoad: function (options) {
  // 頁面初始化 options為頁面跳轉所帶來的參數
  let that = this
  wx.login({
   success: function (res) {
    // success
    let code = res.code
    that.setData({ code: code })
    wx.getUserInfo({
     success: function (res) {
      // success
      that.setData({ userInfo: res.userInfo })
      that.setData({ iv: res.iv })
      that.setData({ encryptedData: res.encryptedData })
      that.get3rdSession()
     }
    })
   }
 })
}

2、發送code到第三方服務器,獲取3rd_session

get3rdSession:function(){
  let that = this
  wx.request({
   url: 'https://localhost:8443/get3rdSession',
   data: {
    code: this.data.code
   },
   method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
   // header: {}, // 設置請求的 header
   success: function (res) {
    // success
    var sessionId = res.data.session;
    that.setData({ sessionId: sessionId })
    wx.setStorageSync('sessionId', sessionId)
    that.decodeUserInfo()
   }
  })
 }

3、在第三方服務器上發送appid、appsecret、code到微信服務器換取session_key和openid

這里使用JFinal搭建的服務器

Redis配置

public void configPlugin(Plugins me) {
  //用于緩存userinfo模塊的redis服務
  RedisPlugin userInfoRedis = new RedisPlugin("userInfo","localhost");
  me.add(userInfoRedis);
}

獲取第三方session

public void get3rdSession() {
  //獲取名為userInfo的Redis Cache對象
  Cache userInfoCache = Redis.use("userInfo");
  String sessionId = "";
  JSONObject json = new JSONObject();
  String code = getPara("code");
  String url = "https://api.weixin.qq.com/sns/jscode2session?appid=wx7560b8008e2c445d&secret=f1af3312b7038513fd17dd9cbc3b357c&js_code=" + code + "&grant_type=authorization_code";
  //執行命令生成3rd_session
  String session = ExecLinuxCMDUtil.instance.exec("cat /dev/urandom |od -x | tr -d ' '| head -n 1").toString();
  json.put("session", session);
  //創建默認的httpClient實例
  CloseableHttpClient httpClient = getHttpClient();
  try {
    //用get方法發送http請求
    HttpGet get = new HttpGet(url);
    System.out.println("執行get請求:...." + get.getURI());
    CloseableHttpResponse httpResponse = null;
    //發送get請求
    httpResponse = httpClient.execute(get);
    try {
      //response實體
      HttpEntity entity = httpResponse.getEntity();
      if (null != entity) {
        String result = EntityUtils.toString(entity);
        System.out.println(result);
        JSONObject resultJson = JSONObject.fromObject(result);
        String session_key = resultJson.getString("session_key");
        String openid = resultJson.getString("openid");
        //session存儲
        userInfoCache.set(session,session_key+","+openid);
        }
      } finally {
        httpResponse.close();
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        closeHttpClient(httpClient);
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
    renderJson(json);
}
private CloseableHttpClient getHttpClient() {
  return HttpClients.createDefault();
}

private void closeHttpClient(CloseableHttpClient client) throws IOException {
  if (client != null) {
    client.close();
  }
}

ExecLinuxCMDUtil.Java

import java.io.InputStreamReader;
import java.io.LineNumberReader;

/**
 * java在linux環境下執行linux命令,然后返回命令返回值。
 * Created by LJaer on 16/12/22.
 */
public class ExecLinuxCMDUtil {
  public static final ExecLinuxCMDUtil instance = new ExecLinuxCMDUtil();

  public static Object exec(String cmd) {
    try {
      String[] cmdA = { "/bin/sh", "-c", cmd };
      Process process = Runtime.getRuntime().exec(cmdA);
      LineNumberReader br = new LineNumberReader(new InputStreamReader(
          process.getInputStream()));
      StringBuffer sb = new StringBuffer();
      String line;
      while ((line = br.readLine()) != null) {
        System.out.println(line);
        sb.append(line).append("\n");
      }
      return sb.toString();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }
}

4、解密用戶數據

decodeUserInfo:function(){
  let that = this
  wx.request({
   url: 'https://localhost:8443/decodeUserInfo',
   data: {
    encryptedData: that.data.encryptedData,
    iv: that.data.iv,
    session: wx.getStorageSync('sessionId')
   },
   method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
   // header: {}, // 設置請求的 header
   success: function (res) {
    // success
    console.log(res)
   }
  })
}

console輸出結果:

關于微信小程序中用戶數據解密的介紹

后端解密代碼

/**
 * 解密用戶敏感數據
 */
public void decodeUserInfo(){
  String encryptedData = getPara("encryptedData");
  String iv = getPara("iv");
  String session = getPara("session");
  //從緩存中獲取session_key
  //獲取名稱為userInfo的Redis Cache對象
  Cache userInfoRedis = Redis.use("userInfo");
  Object wxSessionObj = userInfoRedis.get(session);
  if(null==wxSessionObj){
    renderNull();
  }
  String wxSessionStr = (String)wxSessionObj;
  String session_key = wxSessionStr.split(",")[0];


  try {
    byte[] resultByte = AESUtil.instance.decrypt(Base64.decodeBase64(encryptedData), Base64.decodeBase64(session_key), Base64.decodeBase64(iv));
    if(null != resultByte && resultByte.length > 0){
      String userInfo = new String(resultByte, "UTF-8");
      System.out.println(userInfo);
      JSONObject json = JSONObject.fromObject(userInfo); //將字符串{“id”:1}
      renderJson(json);
    }
  } catch (InvalidAlgorithmParameterException e) {
    e.printStackTrace();
  } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
  }
}

AESUtil.java

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.*;

public class AESUtil {
  public static final AESUtil instance = new AESUtil();

  public static boolean initialized = false;

  /**
   * AES解密
   * @param content 密文
   * @return
   * @throws InvalidAlgorithmParameterException
   * @throws NoSuchProviderException
   */
  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();
    }
    return null;
  }

  public static void initialize(){
    if (initialized) return;
    Security.addProvider(new BouncyCastleProvider());
    initialized = true;
  }
  //生成iv
  public static AlgorithmParameters generateIV(byte[] iv) throws Exception{
    AlgorithmParameters params = AlgorithmParameters.getInstance("AES");
    params.init(new IvParameterSpec(iv));
    return params;
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

微信小程序通過保存圖片分享到朋友圈的功能實現

關于微信小程序收藏功能的實現

微信小程序如何獲取openid及用戶信息

以上就是關于微信小程序中用戶數據解密的介紹的詳細內容,更多請關注php中文網其它相關文章!


小程序是一種不需要下載安裝即可使用的應用,它實現了應用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應用。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 想看黄色一级片| www.色就是色| 2025韩国理伦片在线观看| 精品人妻大屁股白浆无码| 色91精品久久久久久久久| 在线观看av免费观看| 激情婷婷综合网| 九一精品在线观看| 国产又黄又大又粗视频| 国产精品免费观看久久| 欧美久久在线观看| 国产原创popny丨九色| www一区二区www免费| 欧美美女一级片| 最新av网址在线观看| 91免费版看片| 一区二区三区视频网| 日本在线一二三区| 欧美国产在线一区| 欧美自拍小视频| 香蕉视频999| 日本三级福利片| 99精品视频在线看| 成人亚洲精品777777大片| 国产一二三四五| 日韩视频免费播放| 91精品视频国产| 欧美这里只有精品| 99色精品视频| 熟妇熟女乱妇乱女网站| 欧美视频在线观看视频| 黑人粗进入欧美aaaaa| 91免费视频污| 丝袜老师办公室里做好紧好爽| 91色国产在线| 国产av熟女一区二区三区| 日韩精品一区二区三区久久| 午夜av中文字幕| 日本不卡在线观看视频| 性猛交ⅹ×××乱大交| 看一级黄色录像| 国产区二区三区| 俄罗斯av网站| 男女啪啪免费观看| 热久久精品免费视频| 久久久精品视频国产| 国产成人无码一二三区视频| 国产妇女馒头高清泬20p多| 中文字幕一区二区三区四区五区人| 欧美女人性生活视频| 欧美性受xxxx黑人猛交88| 亚洲成人福利在线观看| 欧美视频免费看欧美视频| 99中文字幕在线| 天天爽人人爽夜夜爽| 国产av国片精品| 女人色极品影院| 在线观看av的网址| 自拍偷拍一区二区三区四区| 欧美爱爱视频免费看| 国产免费裸体视频| 日本道在线视频| 亚洲人成无码www久久久| 精品少妇人妻av一区二区| 国产超碰在线播放| 欧美a在线视频| 成人免费播放器| 国产精品无码电影在线观看| 热这里只有精品| 成年人免费观看的视频| 一起操在线视频| 一个色综合久久| 黄色手机在线视频| 蜜臀一区二区三区精品免费视频| 动漫av免费观看| 日日摸天天爽天天爽视频| 久久婷婷国产91天堂综合精品| 熟女人妇 成熟妇女系列视频| 色综合av综合无码综合网站| 欧美激情精品久久久久久小说| 国产精品动漫网站| 天天综合网久久| 水蜜桃在线免费观看| 成人免费在线网| 色欲av无码一区二区人妻| 九热视频在线观看| 中文字幕22页| 亚洲理论电影在线观看| 国产二区视频在线播放| 午夜免费精品视频| 日韩不卡的av| 久久精品免费一区二区| 91欧美视频在线| 国产一线二线三线女| 成人在线观看黄| 91精品国产三级| 国产91在线视频观看| 国产精品999.| 日本韩国欧美在线观看| 亚洲欧美自拍另类日韩| 最近免费观看高清韩国日本大全| 99精品人妻少妇一区二区 | 香蕉视频xxxx| www.av毛片| 一级黄色片国产| 粗暴91大变态调教| 国产精品国产三级国产专区51| 超碰网在线观看| 男人天堂新网址| 日本超碰在线观看| 中文字幕无码精品亚洲35| www.久久久久久久久久久| 欧美 国产 综合| 黄色污污在线观看| 中文字幕国产高清| 91猫先生在线| 日韩成人三级视频| 国产又大又长又粗又黄| 日韩一级片播放| 精品久久久久久久久久中文字幕| 四虎影院一区二区| 成人综合久久网| 亚洲性生活网站| 日韩一级在线免费观看| 黄色一级片在线看| 浴室偷拍美女洗澡456在线| 欧美特级aaa| 五月婷婷丁香色| 精品少妇无遮挡毛片| 国产女大学生av| 国产特级淫片高清视频| 永久免费看av| 精品视频在线观看一区二区| 欧美xxxx吸乳| 国产小视频免费| 日本一本中文字幕| 国产爆乳无码一区二区麻豆| 91视频 - 88av| 日本xxxxxxxxxx75| 亚洲国产精品久久久久婷蜜芽| 免费看的黄色大片| 91看片就是不一样| 日韩一级免费在线观看| 日韩中文字幕免费在线| 亚洲欧美视频二区| 中文字幕亚洲影院| 肉大捧一出免费观看网站在线播放| 91在线第一页| 久久男人资源站| 18岁视频在线观看| 国产高清999| 精品人妻少妇一区二区| 国产精品97在线| 中文字幕第38页| 性生活免费观看视频| 精品成在人线av无码免费看| 国产女女做受ⅹxx高潮| 伊人色在线观看| www.xxx麻豆| 三级在线免费看| 50度灰在线观看| 欧美 日韩 国产一区| 三级性生活视频| 亚洲精品无码国产| 网站一区二区三区| 欧美一级爱爱视频| 男人插女人下面免费视频| a级网站在线观看| av无码精品一区二区三区| 日本黄色a视频| 亚洲国产精品毛片av不卡在线| 中文字幕第66页| 日韩 欧美 高清| 成人一级生活片| theporn国产精品| 日本精品久久久久中文字幕| 日韩不卡视频一区二区| 激情视频综合网| 欧美一区二区视频在线播放| 免费av不卡在线| 成人免费视频久久| 国产主播自拍av| 老汉色影院首页| 亚洲精品手机在线观看| 国产成人黄色片| 黄色一级视频片| 成人免费a级片| 熟女视频一区二区三区| 久久这里只精品| 亚洲免费一级视频| 成人观看免费完整观看| 九九热只有这里有精品| 欧美精品一区二区性色a+v| 国产喷水theporn| 一区二区三区视频网| 日韩免费高清在线| 美女一区二区三区视频| 久久久噜噜噜www成人网| 99爱视频在线| 国产视频在线视频|