帮助中心

官网的Python示例版本是python2改成python3版本,兼容中文python3.8.0下可用pip install pycryptodome==3.9.4WXBizMsgCrypt.py#!/usr/bin/envpython#-*-encoding:utf-8-*-对公众平台发送给公众账号的消息加解密示例代码.@copyright:Copyright(c)1998-2014Ten

当前位置: 首页  >> 新闻中心  >> 帮助中心  >> 查看详情

对微信公众平台发送给微信公众账号的消息进行加解密python3版本代码

浏览量:1137 时间:2023-08-16 05:34:05

官网的Python示例版本是python2改成python3版本,兼容中文python3.8.0下可用

pip install pycryptodome==3.9.4

序列号 CPU RAM HDD 带宽 售价(美元) 免费试用
香港服务器1 E5-2620 32G 1T HDD 50M/无限流量 $196.00 立即申请
香港服务器2 E5-2650 32G 1T HDD 50M/无限流量 $256.00 立即申请
香港服务器3 E5-2680 32G 1T HDD 50M/无限流量 $316.00 立即申请
香港服务器4 E5-2690 32G 1T HDD 50M/无限流量 $336.00 立即申请
香港服务器5 E5-2697 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器6 E5-2620*2 32G 1T HDD 50M/无限流量 $376.00 立即申请
香港服务器7 E5-2650*2 32G 1T HDD 50M/无限流量 $436.00 立即申请
香港服务器8 E5-2680*2 32G 1T HDD 50M/无限流量 $476.00 立即申请
香港服务器9 E5-2690*2 32G 1T HDD 50M/无限流量 $556.00 立即申请
香港服务器10 E5-2697*2 32G 1T HDD 50M/无限流量 $596.00 立即申请
香港服务器11 E5-2680v4*2 32G 1T HDD 50M/无限流量 $696.00 立即申请
香港服务器12 E5-2698v4*2 32G 1T HDD 50M/无限流量 $796.00 立即申请

WXBizMsgCrypt.py

#!/usr/bin/envpython#-*-encoding:utf-8-*-"""对公众平台发送给公众账号的消息加解密示例代码.@copyright:Copyright(c)1998-2014TencentInc."""#------------------------------------------------------------------------importbase64importstringimportrandomimporthashlibimporttimeimportstructfromCrypto.CipherimportAESimportxml.etree.cElementTreeasETimportsocketfrom.importierror"""关于Crypto.Cipher模块,ImportError:Nomodulenamed'Crypto'解决方案请到官方网站www.dlitz.net/software/pycrypto/下载pycrypto。下载后,按照README中的“Installation”小节的提示进行pycrypto安装。"""classFormatException(Exception):passdefthrow_exception(message,exception_class=FormatException):"""mydefineraiseexceptionfunction"""raiseexception_class(message)classSHA1:"""计算公众平台的消息签名接口"""defgetSHA1(self,token,timestamp,nonce,encrypt):"""用SHA1算法生成安全签名@paramtoken:票据@paramtimestamp:时间戳@paramencrypt:密文@paramnonce:随机字符串@return:安全签名"""try:sortlist=[token,timestamp,nonce,encrypt]sortlist.sort()sha=hashlib.sha1()sha.update(("".join(sortlist)).encode())returnierror.WXBizMsgCrypt_OK,sha.hexdigest()exceptExceptionase:returnierror.WXBizMsgCrypt_ComputeSignature_Error,NoneclassXMLParse:"""提供提取消息格式中的密文及生成回复消息格式的接口"""#xml消息模板AES_TEXT_RESPONSE_TEMPLATE="""%(timestamp)s"""defextract(self,xmltext):"""提取出xml数据包中的加密消息@paramxmltext:待提取的xml字符串@return:提取出的加密消息字符串"""try:xml_tree=ET.fromstring(xmltext)encrypt=xml_tree.find("Encrypt")returnierror.WXBizMsgCrypt_OK,encrypt.textexceptExceptionase:print(e)returnierror.WXBizMsgCrypt_ParseXml_Error,None,Nonedefgenerate(self,encrypt,signature,timestamp,nonce):"""生成xml消息@paramencrypt:加密后的消息密文@paramsignature:安全签名@paramtimestamp:时间戳@paramnonce:随机字符串@return:生成的xml字符串"""resp_dict={'msg_encrypt':encrypt,'msg_signaturet':signature,'timestamp':timestamp,'nonce':nonce,}resp_xml=self.AES_TEXT_RESPONSE_TEMPLATE%resp_dictreturnresp_xmlclassPKCS7Encoder():"""提供基于PKCS7算法的加解密接口"""block_size=32defencode(self,bytes):"""对需要加密的明文进行填充补位@paramtext:需要进行填充补位操作的明文@return:补齐明文字符串"""text_length=len(bytes)#计算需要填充的位数amount_to_pad=self.block_size-(text_length%self.block_size)ifamount_to_pad==0:amount_to_pad=self.block_size#获得补位所用的字符pad=chr(amount_to_pad).encode()returnbytes+pad*amount_to_paddefdecode(self,decrypted):"""删除解密后明文的补位字符@paramdecr

24小时服务器机房客服
帮助中心
  • 24H在线
  • Tg纸飞机