使用 python 进行卡密创建
python
import json
import time
import base64
import requests
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
class NetworkAuthenticationAPI:
def __init__(self, key: str, base_url: str, software_id: str):
self.key = bytes.fromhex(key) # 16 字节密钥
self.iv = bytes(16) # 16 字节全零 IV
self.base_url = base_url
self.software_id = software_id
def encrypt_data(self, data: dict) -> str:
# 创建加密器
cipher = Cipher(algorithms.AES(self.key), modes.CBC(self.iv), backend=default_backend())
encryptor = cipher.encryptor()
# 将数据转换为 JSON 字符串
plaintext = json.dumps(data)
# 填充明文
padder = padding.PKCS7(algorithms.AES.block_size).padder()
padded_data = padder.update(plaintext.encode()) + padder.finalize()
# 加密
ciphertext = encryptor.update(padded_data) + encryptor.finalize()
# 编码为 Base64 以便于传输
encoded_ciphertext = base64.b64encode(ciphertext).decode('utf-8')
return encoded_ciphertext
def create_network_authentication(self, day: int, remark: str) -> dict:
# 构建请求数据
data = {
"day": day,
"remark": remark,
"times": int(time.time() * 1000)
}
# 加密数据
encoded_ciphertext = self.encrypt_data(data)
# 发送请求
url = f"{self.base_url}/createNetworkAuthentication"
params = {
'info': encoded_ciphertext,
'softwareId': self.software_id,
'isAPI': 'y'
}
response = requests.get(url, params=params)
# 返回响应的 JSON 数据
return response.json()
# 示例使用
if __name__ == "__main__":
key = '45BDD3D93E4E4D03A967AF32819FEF13'
base_url = "https://api.2018k.cn/v3"
software_id = 'A5FF52C49A6740F6A7383857162C8C9E'
api = NetworkAuthenticationAPI(key, base_url, software_id)
response = api.create_network_authentication(day=1, remark="通过卡密创建")
print(response)