故事背景:

前后端每次通讯的时候,需要验证sign,这个sign经过了b64_md5两步骤操作。

在python端,生成sign的代码如下:

import md5

import base64

m = md5.new("32438c62a70a4d4ebfb1730b262d4bea&POST&/voip/tpsn/sendsms&{bussiness={parameters=[Tom]&phone=18688721878&template=21}&system={appkey=580419120263&charset=UTF-8&timestamp=1478081529&version=1.0.0}}")

print m.digest() // 这个方法出来的是二进制数据

sign = base64.urlsafe_b64encode(m.digest())[:-2]

print sign

print m.hexdigest() //这个方法是16进制数显示的

这里先md5再经过base64, 使用了一个urlsafe_b64encode的方法。

前端在实现以上逻辑的时候,当然会首选现成的库文件,我所找到的代码参见这里, 直接使用b64_md5这个方法皆可。

但是这样生成的sign与python生成的sign有一些细微的区别,比如js生成的带有+号,而在python中则显示为-号。这让我想到应该调查下python中urlsafe的处理方式。

其中提到:

由于标准的Base64编码后可能出现字符+和/,在URL中就不能直接作为参数,所以又有一种"url safe"的base64编码,其实就是把字符+和/分别变成-和_

于是对b64_md5之后返回的字符串进行替换:

var hash = b64_md5(newString);

hash = hash.replace(/\+/g, "-");

hash = hash.replace(/\//g, "_");

即可生成与python相同的sign。

python兼容js base64_前端base64编码的坑相关推荐

  1. 前端Base64编码知识,一文打尽

    原文: https://juejin.cn/post/6989391487200919566 作者: 云的世界 掘金专栏: 前端基础进阶 健康满分 关注并将「趣谈前端」设为星标 每天定时分享技术干货/ ...

  2. Python 图片数据MYSQL存取(BASE64编码解码)

    Python 图片数据MYSQL存取(BASE64编码解码) 1.相关python代码 #-*- coding:utf-8 -*-import pymysql import sys import ba ...

  3. node.js 图片转base64编码

    node.js 图片转base64编码 说明:这里用的是调用接口上传一个图片转为base64编码,不想写接口也可以直接读取本地图:基于node.js,使用koa框架开发的接口. 1.接口代码: //k ...

  4. Python将图片转化为base64编码以及如何在html网页上显示

    1.Python将图片转化为base64编码 test.py # -*- coding: utf-8 -*- import base64 #这一段代码时间图片转化为base64 with open(& ...

  5. base64编码踩坑之身份证号模糊查询

    原文:base64编码踩坑之身份证号模糊查询 首先将我在项目中遇到的坑挖出来.在我们的项目中有这样的一个需求就是对于用户的身份证号在数据库中存储的时候不能是明文存储.鉴于这样的一个需求,很自然的我们就 ...

  6. 前端Base64编码(兼容IE8)

    前端Base64编码数据(加密和解密) 谷歌:base64.js /** base64.js** Licensed under the BSD 3-Clause License.* http://op ...

  7. 一文打尽前端 Base64 编码知识

    关注公众号 前端开发博客,回复"加群" 加入我们一起学习,天天进步 前言 本文收录在 前端基础进阶[1] 专栏,欢迎关注和收藏, 往期经典: [干货]私藏的这些高级工具函数,你拥有 ...

  8. 前端Base64编码

    Base64编码 什么是Base64编码 我们所看到的网页上的每一个图片,都是需要消耗一个 http 请求下载而来的,不管如何,图片的下载始终都要向服务器发出请求,要是图片的下载不用向服务器发出请求, ...

  9. 【JS】前端base64转图片File对象

    码 base64ToFile.js /** * base64转图片File * @param {String} base64 图片base64 * @param {String} fileName 图 ...

最新文章

  1. dyaddown matlab,matlab 采样函数
  2. server 群辉emby_群晖容器中搭建支持硬件编码的Emby Server教程及注意事项
  3. 正态分布的前世今生(1)
  4. 201501006-构建之法:现代软件工程-阅读笔记
  5. DirectX SDK (June 2010)安装遇到Error Code S1023
  6. shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)
  7. Zbrush学习笔记十——制作毛发、模型减面
  8. keepalived高可用
  9. 程序员集体意识大爆发:996背后的深问题
  10. 饺子播放器使用IJKPlayer播放MP4文件
  11. 利用Email包实现邮件的群收发功能
  12. 解决打开html文件为乱码(完美)
  13. docker 网络配置
  14. 微信公众平台商业模式探索
  15. 匠人精神打磨六年 “中国制造” Hubble自然走向AI-Native数据库
  16. L计算机英语ppt,罗立胜-学术综合英语Unit5.ppt
  17. tasn_xxx.c系列文件功用
  18. 【unity】建一个传送门
  19. [Unity Mirror] 服务器托管
  20. ANTLR4权威参考手册(一)

热门文章

  1. JavaScript中有关数据结构和算法的最佳书籍
  2. gitter 卸载_最佳Gitter渠道:PHP
  3. java final static
  4. [linux]Error: failure: repodata/repomd.xml from fedora: [Errno 256] No more mirrors to try.
  5. chrome查看md文件
  6. leetCode 题 - 100. 相同的树
  7. 多站点IIS的架设:主机头法
  8. 【opencv有趣应用】二维码和条形码的检测
  9. 深度学习《VAE-GAN》
  10. [深度学习-原理]GAN(生成对抗网络)的简单介绍