def getCipherPassword(password):private_key = '8EDB615B1D48B8BE188FC0F18EC08A41DF50EA731FA28BF409E6552809E3A111' # 这里假设你已经有了私钥字符串,实际中需通过特定方法生成public_key = '0484C7466D950E120E5ECE5DD85D0C90EAA85081A3A2BD7C57AE6DC822EFCCBD66620C67B0103FC8DD280E36C3B282977B722AAEC3C56518EDCEBAFB72C5A05312' # 同理,公钥字符串# 生成SM2密钥对sm2 = gmssl.sm2.CryptSM2(public_key=public_key,private_key=private_key,mode=1)# 加密ciphertext = sm2.encrypt(password.encode())print(f"加密后的消息(二进制形式): {ciphertext.hex()}")return ciphertext.hex()def login():# 登录页面的URLlogin_url = 'http://localhost:5005/api/sysAuth/login'headers = {# 'Authorization': 'Bearer YourAccessToken', # 替换为您的访问令牌或其他认证信息'Content-Type': 'application/json' # 根据接口要求添加请求头}password = getCipherPassword('密码')# 登录表单的数据payload = {'account': 'superadmin','password': password,'schoolId': 'npjx','code': '','codeId':0,'userid':''}print(payload)# 使用Session保持会话状态session = requests.Session()# 发送POST请求以登录login_response = session.post(login_url,data=str(payload),headers=headers)# 检查登录是否成功if login_response.status_code == 200:print("登录成功!")try:error_info = login_response.json() # 尝试解析错误信息print("错误信息:", login_response.text)except ValueError:# 如果响应不是 JSON 格式,打印文本内容print("错误信息:", login_response.text)else:print("登录失败")
参考文章:国密sm2的Vue、Python、Java互通使用