| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import hashlib
- import json
- import base64
- import sys
- from collections import OrderedDict
- from Crypto.PublicKey import RSA
- from Crypto.Hash import MD5, SHA1, SHA256
- from Crypto.Signature import PKCS1_v1_5 as Signature_PKC
- def main():
- # 从标准输入读取JSON字符串
- input_json = sys.stdin.read().strip()
- # 解析JSON数据
- input_data = json.loads(input_json)
- # 从输入数据中获取参数
- req_body_data = input_data["reqBodyData"]
- timestamp = input_data["timestamp"]
- appId = input_data["appId"]
- appKey = input_data["appKey"]
- # 按照阿拉伯字符排序
- jsonstr = json.dumps(req_body_data, sort_keys=True,separators=(',',':'), ensure_ascii=False)
- data = dict()
- data["appId"] = appId
- data["timestamp"] = timestamp
- data["bizData"] = jsonstr
- #计算md5值
- m = hashlib.md5()
- m.update(jsonstr.encode('utf-8'))
- # 二进制数据字符串值
- md5_str = m.hexdigest()
- sign_str = '%s%s%s%s' % (jsonstr, md5_str, appId, timestamp)
- # 打印签名值
- private_keyBytes = base64.b64decode(appKey)
- rsakey = RSA.importKey(private_keyBytes)
- signer = Signature_PKC.new(rsakey)
- # 根据SHA256算法处理签名内容data
- sha_data = SHA1.new(sign_str.encode("utf-8"))
- #sha_data = SHA1.new(sign_str)
- # 私钥进行签名
- signature = base64.b64encode(signer.sign(sha_data))
- # 输出签名结果
- print(signature)
- if __name__ == "__main__":
- main()
|