概述
1、在子应用内创建utils.py并添加以下内容
import base64
import json
from Crypto.Cipher import AES
class WXBizDataCrypt:
def __init__(self, appId, sessionKey):
self.appId = appId
self.sessionKey = sessionKey
def decrypt(self, encryptedData, iv):
# base64 decode
sessionKey = base64.b64decode(self.sessionKey)
encryptedData = base64.b64decode(encryptedData)
iv = base64.b64decode(iv)
cipher = AES.new(sessionKey, AES.MODE_CBC, iv)
decrypted = json.loads(self._unpad(cipher.decrypt(encryptedData)).decode())
if decrypted['watermark']['appid'] != self.appId:
raise Exception('Invalid Buffer')
return decrypted
def _unpad(self, s):
return s[:-ord(s[len(s)-1:])]
2、views.py
from .utils import WXBizDataCrypt
class MobileView(APIView):
'''解密手机号'''
def get(self, request):
# 获取加密手机号
encryptedData = request.GET.get('encryptedData')
# 处理加密的手机号
encryptedData = encryptedData + '=='
# 获取加密向量
vinum = request.GET.get('vinum')
# 处理加密向量
iv = vinum + '=='
# 获取openid
openid = request.GET.get('openid')
# appid
appId = APPID
# 获取sessinkey
redis_conn = get_redis_connection('session_key')
sessionKey = redis_conn.get('session_key_%s' % openid)
# sessionkey = request.data.get('session_key')
# 解密手机号
pc = WXBizDataCrypt(appId, sessionKey)
mobile_obj = pc.decrypt(encryptedData, vinum)
mobile = mobile_obj['phoneNumber']
# print(mobile)
data = {
'mobile':mobile
}
return Response(data=data, status=status.HTTP_200_OK)
最后
以上就是爱笑人生为你收集整理的微信小程序python解析获取用户手机号_python开发微信小程序解密获取的手机号的全部内容,希望文章能够帮你解决微信小程序python解析获取用户手机号_python开发微信小程序解密获取的手机号所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复