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():
# 登录页面的URL
login_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互通使用