收藏
回答

企业微信通讯录异步导出后获得一个二进制文件data_0.json,怎么解码?

问题类型 API/组件名称 终端类型 微信版本 基础库版本
Bug 获取导出结果 工具 6.5.3 2.0.0

根据这个帮助文档,https://open.work.weixin.qq.com/api/doc/90000/90135/94854

测试企业微信通讯录异步导出,获得导出结果,是一个二进制文件,不知道如何打开,

在线帮助文档也没写清楚,

回答关注问题邀请回答
收藏

5 个回答

  • 企业微信运营专员-千夜
    企业微信运营专员-千夜
    2021-09-17

    你好,这个url下载后是需要解密,用md5做校验,解密方法是 aes-256-cbc 

    2021-09-17
    有用
    回复 9
    • Nov.
      Nov.
      2021-11-16
      我也遇到了这个问题,我是postman调用之后下载下来的,怎么才能用这个方法解密?
      2021-11-16
      回复
    • 企业微信运营专员-千夜
      企业微信运营专员-千夜
      2021-11-17回复Nov.
      找下相应的解密库
      2021-11-17
      回复
    • 澍 pro max
      澍 pro max
      2021-12-06
      这里用AES的CBC模式解密还有一些关键的参数没有说明,比如偏移量,字符集,填充。
      2021-12-06
      回复
    • Lidong
      Lidong
      2022-01-18
      下载下来的文件编码是什么, 文本打开都是乱码
      2022-01-18
      回复
    • 一页书
      一页书
      2022-03-16回复澍 pro max
      你好 ,有demo吗,我也卡在这里了
      2022-03-16
      回复
    查看更多(4)
  • 饶鲜森
    饶鲜森
    2022-03-24

    这个文档写的稀巴烂,也没人维护

    代码如下

    CloseableHttpResponse response = null;
    
    HttpGet httpGet = new HttpGet(new_uri);
    byte[] result;
    response = client.execute(httpGet);
    response.getStatusLine();
    HttpEntity responseEntity = response.getEntity();
    result = EntityUtils.toByteArray(responseEntity);
    
    String ENCODING_AESKEY = "IJUiXNpvGbODwKEBSEsAeOAPAhkqHqNCF6g19t9wfg2";
    
    // 获取 key
    byte[] key = decodeBase64(ENCODING_AESKEY + "=");
    // 设置解密模式为AES的CBC模式 nopadding 不填充
    Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
    SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
    // 获取 iv
    IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(key, 0, 16));
    cipher.init(Cipher.DECRYPT_MODE, keySpec, iv);
    // 解密 body
    byte[] original = cipher.doFinal(result);
    



    2022-03-24
    有用 2
    回复
  • Shine_ssr
    Shine_ssr
    2022-10-13

    官方文档上要是有个列子就好了 折腾了老半天才好.有需求的小伙伴可以参考下

    2022-10-13
    有用 1
    回复
  • LAC
    LAC
    2023-09-19

    附上.Net 写法

       

            private static string DecryptData(byte[] encryptedBytes, string encodingAesKey)

            {           

                byte[] key = Convert.FromBase64String(encodingAesKey +"=");

                using (Aes aesAlg = Aes.Create())

                {

                    aesAlg.Key = key;// 从Base64字符串还原AES密钥

                    aesAlg.IV = key.Take(16).ToArray(); // 截取前16个字节作为IV;

                    aesAlg.Mode = CipherMode.CBC;

                    aesAlg.Padding = PaddingMode.None;


                    // 创建解密器

                    ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);

                    // 解密数据

                    byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);

                    // 将解密后的数据转换为字符串

                    string decryptedText = Encoding.UTF8.GetString(decryptedBytes);

                    return decryptedText;

                }

            }

    2023-09-19
    有用
    回复
  • 星夜net😎
    星夜net😎
    2022-09-01

    有没有php 的解密例子?

    我这边弄来弄去数据都是空的。

    2022-09-01
    有用
    回复
登录 后发表内容