python实现对以‘&’连接的参数串排序后计算md5

本程序实现了对’&'符号连接的http参数串排序后再计算md5.
主要步骤为:1.参数串以&为分割符拆成list,
2. 对list进行排序
3. 把排序完的list再用&连接为string
4. 对string计算md5
参数串例如
str1=“languageId=0&accessToken=0E4730695CDD9B4F8D56B8107171F525-001407107122545&outTradeNo=148879135312969764307b4a86&payPlatform=1&packageName=com.baidu.vodx&payMode=2&price=0.01&payInfoId=15543373&version=6.2&productname=book&sourceType=1&thirdAppCallBack=&timeStamp=1488793412&thirdappName=com.qq.vod”

代码在Python3.4.3调试通过。

#!/usr/bin/env python
#coding=gbk

import struct
import hashlib

def md5(input):
    input =input.encode('utf-8');
    md5sign = hashlib.md5()
    md5sign.update(input)
    str = md5sign.digest()
    data = struct.unpack("IIII", str)
    md5value = data[0] << 96 | data[1] << 64 | data[2] << 32 | data[3]
    return md5value

if __name__ == "__main__":
    str1="languageId=0&accessToken=0E4730695CDD9B4F8D56B8107171F525-001407107122545&outTradeNo=148879135312969764307b4a86&payPlatform=1&packageName=com.baidu.vodx&payMode=2&price=0.01&payInfoId=15543373&version=6.2&productname=book&sourceType=1&thirdAppCallBack=&timeStamp=1488793412&thirdappName=com.qq.vod"

    #string 拆分为List 
    strSplit=str1.split('&')  #str.split(str="", num=string.count(str)).
    print (strSplit)
    print ('\n')

    #List排序
    strSorted=sorted(strSplit)
    print (strSorted)
    print ('\n')

    #List转为string,以&连接
    strConvert = '&'.join(strSorted)
    print(strConvert+'\n')

    
    print (md5(strConvert))

处理结果:
[‘languageId=0’, ‘accessToken=0E4730695CDD9B4F8D56B8107171F525-001407107122545’, ‘outTradeNo=148879135312969764307b4a86’, ‘payPlatform=1’, ‘packageName=com.baidu.vodx’, ‘payMode=2’, ‘price=0.01’, ‘payInfoId=15543373’, ‘version=6.2’, ‘productname=book’, ‘sourceType=1’, ‘thirdAppCallBack=’, ‘timeStamp=1488793412’, ‘thirdappName=com.qq.vod’]

[‘accessToken=0E4730695CDD9B4F8D56B8107171F525-001407107122545’, ‘languageId=0’, ‘outTradeNo=148879135312969764307b4a86’, ‘packageName=com.baidu.vodx’, ‘payInfoId=15543373’, ‘payMode=2’, ‘payPlatform=1’, ‘price=0.01’, ‘productname=book’, ‘sourceType=1’, ‘thirdAppCallBack=’, ‘thirdappName=com.qq.vod’, ‘timeStamp=1488793412’, ‘version=6.2’]

accessToken=0E4730695CDD9B4F8D56B8107171F525-001407107122545&languageId=0&outTradeNo=148879135312969764307b4a86&packageName=com.baidu.vodx&payInfoId=15543373&payMode=2&payPlatform=1&price=0.01&productname=book&sourceType=1&thirdAppCallBack=&thirdappName=com.qq.vod&timeStamp=1488793412&version=6.2

250954159143332278860033366342707854695

可以看出,得益于Python强大的库函数,写这个程序基本不用知道算法。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值