Go 语言 微信小程序加密数据解密算法实现

代码实现

本实现参考官方PHP例程实现,Go代码实现如下:

func DecryptData (app_id, session_key, iv, encrypted_data string) (map[string]interface{}, error) {if len := strings.Count(session_key, "") - 1; len != 24 {return nil, errors.New("Invalid value session_key!")}aesKey, err := base64.StdEncoding.DecodeString(session_key)if err != nil {return nil, err}if len := strings.Count(iv, "") - 1; len != 24 {return nil, errors.New("Invalid value iv!")}ivKey, err := base64.StdEncoding.DecodeString(iv)if err != nil {return nil, err}decodeData, err := base64.StdEncoding.DecodeString(encrypted_data)if err != nil {return nil, err}dataBytes, err := AesDecrypt(decodeData, aesKey, ivKey)if err != nil {return nil, err}var result map [string] interface{}err = json.Unmarshal(dataBytes, &result)watermark := result["watermark"].(map[string]interface{})if watermark["appid"] != app_id {return nil, errors.New("Invalid appid data!")}return result, err
}

参考

AES解密算法实现参考:golang版微信小程序登录和ase解码微信公开数据,稍作修改,代码如下:

func AesDecrypt(crypted, key, iv []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}blockMode := cipher.NewCBCDecrypter(block, iv)origData := make([]byte, len(crypted))blockMode.CryptBlocks(origData, crypted)// 去除填充length := len(origData)unp := int(origData[length-1])return origData[:(length - unp)], nil
}

Golang 微信小程序加密数据解密算法实现相关推荐

  1. java实现微信小程序加密数据解密的代码怎么写

    前言 微信小程序好坑啊!java明明是用户量最大的编程语言,可是都2021年了,他的小程序文档到现在都没有更新上java实现加密数据解密算法.... 微信小程序官方文档如下: 服务端获取开放数据 | ...

  2. 微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed

    微信小程序加密解密 C# 以及 填充无效,无法被移除错误的解决方案 Padding is invalid and cannot be removed 参考文章: (1)微信小程序加密解密 C# 以及 ...

  3. 微信小程序密文解密工具

    微信小程序密文解密工具 小程序对于敏感信息采用了加密,如果想得到明文必须解密,官方上提供了几种语言的demo,唯独没有java版的,这是在搞事情啊 因此在此提供一个java版的解密工具类 此工具类需要 ...

  4. php解密encrypteddata,微信小程序加密数据(encryptedData)解密中的PHP代码,php7.1报错

    问题描述 最得行更是u告果款近刚交易一c屏.基近刚交近在开发微信小程序涉及到加密数据(encryptedData)的解密,用的是PHP代码,在运行后报错mcrypt_module_ xxx is de ...

  5. PC端微信小程序wxapkg解密

    sh点击上方↑↑↑蓝字[协议分析与还原]关注我们 " 解密PC端wxapkg文件." 用过微信pc版的应该都知道,PC上也可以使用微信小程序. 这个小程序用起来和手机端差不多,不过 ...

  6. 微信小程序前端解密获取用户信息

    在微信小程序中,通过用户手动可以获取到用户昵称,头像等基本信息,稍微敏感的信息无法获取到,需要通过后端解密才能获取到. 例如获取用户手机: 在网上找到cryptojs包,下载下来复制到utils文件夹 ...

  7. 微信小程序与服务器对称加解密,细说CryptoJs使用(微信小程序加密解密)

    前言 CryptoJs是google推出的一款前段解密类库.功能强大,包含很多的前段解密算法. 一.google下载地址: 二次开发版本 google原版地址 二.常用方法 Testing webso ...

  8. 搜索编程的艺术之C#实现微信小程序包解密

    目的:C#实现小程序包wxapkg文件解密算法. 工具:vs2015+百度 .net版本选择2.0(环境依赖低) 备注:已知有python版本,有点重复造轮子.但exe的不用其它依赖,双击打开就能用岂 ...

  9. 微信小程序手机号解密

    在小程序登陆的时候 我们会需要获取手机号 但是前端不会给我们直接传手机号 而是将手机号进行了加密 我们需要解密才能够拿到手机号 进行后面的某些操作 看图 在登陆的时候 前端会给我们传一个code 我们 ...

最新文章

  1. SlidingMenu(一)
  2. 目标文件里面到底有什么(2)?
  3. linux下mysql-5.6忘记root密码,重置root密码详细过程
  4. oracle中角色和用户权限,Oracle用户、角色、权限管理
  5. linux集群系列(4) --- LVS之负载均衡集群 --- 持久连接
  6. oracle 查询所有组合,Oracle的组合条件查询
  7. npm i和npm install命令
  8. 职场上有3种类型的人,最后一种类型老板最喜欢,你是哪一类?
  9. 实体商店与虚拟商店购买保护流程:
  10. 微软 CEO 萨提亚·纳德拉:不要重复造轮子,提升技术强密度
  11. c语言程序设计教程 郭浩志,C语言程序设计教程答案杨路明郭浩志.doc
  12. 优先队列+哈夫曼树(Fence Repair)
  13. iOS使用otool反编译查看接库
  14. resin设置权限_Resin学习笔记
  15. origin画已知函数曲线_20+实用origin技能,带你用技巧画出完美曲线!
  16. 概率论和数理统计知识点总结
  17. 计算机电源可调电阻,电脑ATX电源改0V-30V可调电源,电流7A
  18. 利用canvas打造一个炫酷的粒子背景
  19. VMware虚拟机复制文件卡死的问题
  20. sdkd2019.3.20训练题目

热门文章

  1. 【pytorch】DCGAN实战教程(官方教程翻译)
  2. 计算机组成原理-I/O系统
  3. python加密安装方法_安装Python加密错误
  4. java 二嗨租车项目_Java第二季租车系统参考
  5. pandas多列合并成一列
  6. vue + element-ui 对登录功能、重置表单、退出功能、路由重定向、挂载路由导航守卫的实现
  7. 大学计算机社团学什么好,大学一般有哪些社团 最值得报名的社团有哪些
  8. icp许可证和edi许可证区别是什么?
  9. python networkx 边权重_Python/NetworkX:动态计算边权重
  10. MySQL read_only 与 super_read_only 之间的关系