在线看毛片视频-国产免费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>
  • 黄色网页免费在线观看| 乱子伦视频在线看| 日韩一级片免费视频| 奇米视频888| 91丨porny丨探花| 国产妇女馒头高清泬20p多| 亚洲国产成人va在线观看麻豆| 成人在线观看毛片| 亚洲天堂av一区二区三区| 国产女女做受ⅹxx高潮| 亚洲色图38p| av在线免费看片| 91猫先生在线| 国产精品久久久久久久av福利| av免费中文字幕| 成人3d动漫一区二区三区| 久久久久久久久久久久久国产精品 | 777777av| 人妻熟妇乱又伦精品视频| 拔插拔插海外华人免费| 日韩欧美国产综合在线| 黄网站欧美内射| 欧洲av无码放荡人妇网站| 69堂免费视频| 三年中国国语在线播放免费| 一本色道久久亚洲综合精品蜜桃| 亚洲综合激情视频| 国产精品日韩三级| www.xxx亚洲| 四虎1515hh.com| 三上悠亚久久精品| 国产性生交xxxxx免费| 亚洲欧美日韩一二三区| 水蜜桃色314在线观看| 女人另类性混交zo| 91欧美一区二区三区| 性欧美大战久久久久久久| wwwwww.色| 国产 欧美 日本| 久久久久久三级| 亚洲精品天堂成人片av在线播放 | 中文字幕成人在线视频| 亚洲国产精品女人| 男人的天堂日韩| 亚洲乱码日产精品bd在线观看| 国产91在线视频观看| 青少年xxxxx性开放hg| 国产精品亚洲a| 久久这里只有精品8| 亚洲 欧美 另类人妖| www.亚洲视频.com| 在线观看国产一级片| 能在线观看的av| av在线com| 国内自拍第二页| 色婷婷综合久久久久中文字幕| 香港三级日本三级a视频| 午夜免费福利在线| 国产91在线视频观看| www污在线观看| 欧美wwwwwww| 艹b视频在线观看| 国产成人a亚洲精v品无码| 日韩专区第三页| 国产欧美自拍视频| 国产成人强伦免费视频网站| 国产成人在线综合| 亚洲精品20p| www.涩涩涩| 色噜噜狠狠一区二区| 国产三级国产精品国产专区50| 日韩中文字幕三区| 欧美精品一区二区三区免费播放| 国产精品后入内射日本在线观看| 国产免费裸体视频| 欧美日韩不卡在线视频| 丁香六月激情婷婷| 日本国产在线播放| 黄色免费视频大全| 手机看片福利盒子久久| 亚洲77777| 91制片厂免费观看| 日本免费a视频| 免费看国产曰批40分钟| 国产精品后入内射日本在线观看| 草草久久久无码国产专区| 激情网站五月天| 国产精品igao网网址不卡| 亚洲av首页在线| 久久久久人妻精品一区三寸| 麻豆三级在线观看| 只有这里有精品| 青青青在线播放| 涩涩网站在线看| 日本网站免费在线观看| 亚洲欧美aaa| 九九爱精品视频| 欧美精品性生活| 91精品国产毛片武则天| www.国产区| 女人床在线观看| 五月婷婷狠狠操| 无码人妻精品一区二区蜜桃网站| 熟妇人妻va精品中文字幕| 肉色超薄丝袜脚交| 国产精品入口芒果| 999久久久精品视频| 欧美变态另类刺激| 9999在线观看| 在线观看免费视频高清游戏推荐| 日本黄大片一区二区三区| 男女裸体影院高潮| 超碰av在线免费观看| av动漫在线免费观看| 六月丁香婷婷在线| 欧美少妇在线观看| 北条麻妃在线视频观看| 亚洲免费一级视频| 国产乱淫av片杨贵妃| 网站一区二区三区| 97视频久久久| 日本中文字幕观看| 国产福利一区视频| 男女猛烈激情xx00免费视频| 伊人影院综合在线| 欧美日韩精品在线一区二区| 中文字幕一区二区在线观看视频 | 99久久国产宗和精品1上映| 亚洲欧美日韩三级| 欧美 日韩 国产在线观看| 国产 福利 在线| 成人久久久久久久久| 99re8这里只有精品| 999精品网站| 亚洲熟妇国产熟妇肥婆| 日韩中文字幕免费在线| 黑森林福利视频导航| 男女猛烈激情xx00免费视频| av电影一区二区三区| 久久精品影视大全| 国产一级不卡毛片| 日本爱爱免费视频| 免费午夜视频在线观看| 精品少妇人妻av免费久久洗澡| 亚洲自拍第三页| 91亚洲一区二区| 99亚洲国产精品| 自拍偷拍视频在线| 日韩一二区视频| 久久久久久久久久伊人| 最新天堂在线视频| 少妇一晚三次一区二区三区| 国产农村妇女精品久久| 亚洲精品高清无码视频| 精品国产一区三区| 黄色一级片av| 色综合五月婷婷| 青青青国产在线视频| 成人性视频欧美一区二区三区| 91看片就是不一样| 北条麻妃在线视频| 国产xxxxx视频| 国产女人18毛片| 国产不卡一区二区视频| 国产一级爱c视频| 凹凸国产熟女精品视频| 亚洲第一区第二区第三区| 在线视频日韩欧美| 激情五月六月婷婷| 中文字幕日本最新乱码视频| 日韩精品一区在线视频| 超碰影院在线观看| 午夜激情影院在线观看| 精品成在人线av无码免费看| 国产视频九色蝌蚪| 五月天激情播播| 欧美精品自拍视频| 国产 porn| 黄色成人在线看| av不卡在线免费观看| 欧美二区在线视频| 九九九九九九九九| 亚洲熟妇无码另类久久久| 日韩视频在线观看视频| 好吊妞无缓冲视频观看| 婷婷中文字幕在线观看| 无码中文字幕色专区| av7777777| 蜜桃传媒一区二区三区| 成年人三级黄色片| 国产精品沙发午睡系列| 成人手机视频在线| 黄色片免费网址| 人人干人人视频| 僵尸世界大战2 在线播放| 久久久久久三级| 91av在线免费播放| 久久男人资源站| 樱空桃在线播放| www.亚洲自拍|