from Crypto.PublicKey import RSA
from Crypto.Hash import SHA256
from Crypto.Signature import pkcs1_15
import requests
import time
import json
import base64
# RSA Signature
def rsa_sign(data, rsa_key):
h = SHA256.new(data.encode('utf-8'))
signature = pkcs1_15.new(rsa_key).sign(h)
return str(base64.b64encode(signature), encoding = "utf-8")
# RSA Verification
def rsa_sign_verify(data, sig, rsa_key):
try:
h = SHA256.new(data.encode('utf-8'))
pkcs1_15.new(rsa_key).verify(h, base64.b64decode(sig))
ret = True
except (ValueError, TypeError):
ret = False
return ret
def test(appid):
now = int(time.time())
# build message
plain_text = {
"appId": appid,
"timestamp": now
}
original = json.dumps(plain_text, separators=(',', ':'))
print(f"original {original}")
auth = {
"appId": appid,
"secretKeyVersion": "1",
"sign": sign(original),
"original": original
}
headers = {"Authorization": json.dumps(auth, separators=(',', ':'))}
print(f"headers {headers}")
response = requests.get(f"https://open.maze.guru/api/v1/style-base-infos", headers=headers)
response.encoding = "utf-8"
def sign(text):
private_key_base64_str = 'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKuaRcAYkmDxKObdC5YNGllsMCdnNNLE71zEmvScqAdNCBbf3gaytd5BtN9v+YdZYqXSq8WkyhfRRHGPZ/O7zQ/4I1MKK7wNTeyVmarwMfCkSxIa5coqJTV68dqWayI69pvQLYBqwfKqiMbvDY/WrvpA8uSRPSMfiJttyr7Ei/rVAgMBAAECgYA+R2IzInfVmRCYIPc4gQ7kD2C2nD1OlUyt5Wi7iDNvWuSpsJva4Hci78PeJ7xvA+DKf9f5hiIWXMuzTzGSAsGcBvY0rgghpBKfX58pL3Ete/cny4UGpBwuVWAgQo+HG4XywIti9KfWJaX8gzEdT/q81N5tOWJeVGdfECs+JDNRwQJBANJG7xdU+9XMZWmxXlm4W2WTDVGPMqPPqfy3oWiAa0Q9K5su0pIEeGEcobxF9CMWpuej5Ontxo2uM7T9h3ShFXECQQDQ6oa19wLnF5UIIAsTwNtgL2UIksQ+cEwSK/+cabkCGbCLHpuXjOUuOQIWVj73PZAAyknugF53bBbaXk9UozmlAkAFsSHbsdM3UFcWa1SwfQsMTtS3dnbadE6XpqjZ2VAOAtHhW30bsr9Hcaz3GbWoFX7jGk6h/mu3fhWsOoimIY4hAkAkWMk7G1CL+BRbp4eF1kXUhCplxXMTEeKKPtFn2xTvAp0udxLG2SJ+Wji8viCST0mgeZFHR1ooGMwZDdNrfEJpAkEApG6GgYbzqYSbxon2n2QuUif8j6XyOKpveQbLhjcCCy3BOGV1+JSYZ+iuueGBbHXnBxlfCXC8RJdhwpJjQRoV8Q=='
public_key_base64_str = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrmkXAGJJg8Sjm3QuWDRpZbDAnZzTSxO9cxJr0nKgHTQgW394GsrXeQbTfb/mHWWKl0qvFpMoX0URxj2fzu80P+CNTCiu8DU3slZmq8DHwpEsSGuXKKiU1evHalmsiOvab0C2AasHyqojG7w2P1q76QPLkkT0jH4ibbcq+xIv61QIDAQAB'
private_key=base64.b64decode(private_key_base64_str)
public_key=base64.b64decode(public_key_base64_str)
sign = rsa_sign(text, RSA.importKey(private_key))
print(f"sign:{sign}")
sign_result = rsa_sign_verify(text, sign, RSA.importKey(public_key))
print(f"sign_result:{sign_result}")
return sign
if __name__ == "__main__":
appid = 'wja0q53lmql4cm2yd1'
test(appid)