|
|
发表于
2026-5-19 10:35:50
来自手机
|
显示全部楼层
来自 河南
import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
PRIVATE_KEY_B64 = (
"MIIEowIBAAKCAQEAybZ49QECrmtyvB576otMRNM6RUTCwng0RWFVy/Q0qc9fSJt1"
"WZ3fqm75VPC3dLuZRH3b/ci7EN9ZC5WxO2Pw/OVSRXUgSAMuOyAFa4HckE/5xw1F"
"WQ/kSETLZcS0eUZfp+Y8AqjoKWjWws3aYj3foGWOFcSKsDPutTFtwLlBnFvt7Rlf"
"C/ZPolJHrEGnKqcNd/FnCqh9bJRb8QCRyIh1tCz3HjQsLnSkd0pLX6Rklm/Sskyl"
"bB0IOiXRRzeIO1FbJF4tN+k4+Ugdpc2vgmKqv9hwmuTBR8040nD6S6mVQQVVOnmT"
"2sEzadXPsfTBnuYHe1iNmi+b2g1H4rXW4XTO3QIDAQABAoIBAF13Bp8IA9UMBpLy"
"URrBxupRMbvs+42eoyHO0zF5C3nvk8gR+JM42u2fFDrueyNE1eTtqKT0gPF1fE4o"
"44GQcpbML43tkrKrfp143eoNt0TLOgKovIxjF7UA43pZZgKXwDUNMptM5p5hbLnB"
"JsLExr0MsYSWmGjC94XPzHoznRo0j+2j0C+acfPaNol/ZDOkgB6UBfTEKnMMMIqU"
"HJzNy5cH1ezZaMHhUdVNXlZo0/pZy/5dQCSxfaa5+b4zNrYwJibEDH0oQXXVfMbO"
"tJAjbF3IQtvq8fK/B5fMRXv3jRaINY4wNetLsZK5i3jSCirfj6JzWKb1PJdhGd6j"
"73V9XaUCgYEA59DGM4VHa4iT8yb/I1ewQW5i91GBllz34F5RNNAvd2fcdTNl4nma"
"NxUmtlq5fU2VMpXzlpdxn/HuIz5ItzzKEmQ7jElIxIsKn6HyMoNkeOVPSByOII1g"
"Y+pGwuO6zlYViQ06OGnU1UN7UAPhGGyksNhzIwQsu7Gm1SHia9M+/ocCgYEA3sG6"
"SARFYeBu/X98WUJ7NlVGeMD3OlunnTHRA9JIJYABQWl1WBpRikBmTUE3qmZv/0/J"
"dByXOPhPjNolRrf6LTOLBrD+5s+VjrRSoRQi0dlIZn8Ds3ief+PGH0so/twfUWEJ"
"RKIVRbC1gnNQYBce5ZIAj4zDpPskGbcxGAGIXHsCgYEAjBYJ8FB2XHFoluPWAtGW"
"3bOLctF6chc0ZA4bHMNCK/JDsz+gLkA2BVtuzXv9487ifnNHhJV4QKO+uOWGo9TE"
"eGDB64DNzJgJj3YaGpR0Puq0AmvfJ6THvxlwMY3U8aPr16p6qGSsDUR+XFg7yrq8"
"u3HSAjMfpT0yCFI1tdsukjkCgYBXD4RMzU6IuHzomsDw6ejaDW4jl9eIeXYDHAtC"
"4RbNgT/8Xsk8C90+mXjiTNECylKPiJGFzf7Uh0ggFspm31TqAbEehmK5tvwO8C8z"
"QXlyZufDF3VM2aGo/k7awDdflIyw86n5pxeFS1FFkOgjBiZPN0b809lLS9SKMG0B"
"oue2rQKBgHIJZaeC264hJP/9yLuGKg8ia6p9+5jnzF0/LO2nmQduTS4In/hUwZTc"
"EgV9Fr1He1knBgHySpfpFQu/IG94N69E5FVXQ1YFXg26Mh9fnPh6L1hw7VrxFmQ7"
"i6JEQzX+SLxu0iAgAeC3CVLs2oAdZE1IKp7WtlLHFOchyxk2Vyzs"
)
PUBLIC_KEY_B64 = (
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCQdgKjghHbkro+gWNe9"
"8q61zCSzppOGrJsje5vH5Q4yjJgiNU9hrAj6Rr3oAfe+lZyR5y8bxKcVj/Ca7LM5"
"bwlRD5IotKo1c5zNQ/Iuqoym7x5t5B/ZBOpSRw/W+u4p0GEZ+1ZIUhewO/BM2Esu"
"iD9AKaMr1H4nBBMsNCEU2Sc+p8sn3ettVSTX6QgxB7qsyyOMggL4nKa2vaohk3fy"
"eIVVllKteGlacK7xhlzFDO3340Z5Ep80CidXAr1a5ColjdMMP/oszq4/iGxY/ZxO"
"q7d6NTmJSu3DuuSdpwha+Mu7A1wcQiyC8oxwSBySTY6QQpsftnasLWP9Y2cXRg8P"
"pwIDAQAB"
)
SIGN_DATA = b"lifeisfantastic"
def load_private_key():
der = base64.b64decode(PRIVATE_KEY_B64)
return RSA.import_key(der)
def load_public_key():
der = base64.b64decode(PUBLIC_KEY_B64)
return RSA.import_key(der)
def decrypt_msg(encrypted_msg: str) -> str:
pri_key = load_private_key()
cipher = PKCS1_OAEP.new(pri_key)
data = base64.b64decode(encrypted_msg)
block = 256
res = b""
for i in range(0, len(data), block):
res += cipher.decrypt(data[i:i+block])
return res.decode("utf-8")
def verify_signature(code_field: str) -> bool:
pub_key = load_public_key()
sign = base64.b64decode(code_field)
h = SHA256.new(SIGN_DATA)
try:
pkcs1_15.new(pub_key).verify(h, sign)
return True
except:
return False
if __name__ == "__main__":
json_data ={
"msg": "qdTTi1igkFUb3HzyxoePQ4LhNY5uLd/s2EdsNqiv9NX3oiCb3Nq35UfvlU8b7fh36C1lMY5DeqMGpC56YZYLKPZHXOBG4OHAhvVTctKRv72v8o9IN/GMRZ2tzNnbkLSIDNlDYV4DV5DQJ63cfeE7eRqooRCDxCdioLMU33qkxq+egJnJejQmXocwxULsZ10HrH09bfwg6Tqx5a5O3G6UfEHnmEhOvFr1k6MUTCWOWiWHT86yX4PZ+6E2p801RjYuSy32pkC2D+9N4/unq2r8jYSP1l2sjpUh2YnjyftEgGoapzJeXfOcv7i0SW0RWxFyYhdTegW/Ayqo7MBYp5Vc6KY7O9Tu/4DPgeC400gy6eAH74D8IF89C/P9QnIbsBDilVodyT+GIgXMneGbvUuIwJTCdVd3xiYDF8IPs28ur4zwH4Jda4de3HWtIsVNojtVOmX+tl0IJBsJSa0CdcUriQtCCQVHeXFKTDju/bFNcWaz2oLG0tLW0FXyktSAKA1j2Z7cNlggWqeE3inTkzuX7WWvukNOf9WILGgEH7hFIgXCeg0dHBBGhopIGhAcVlBe3N7t+vU7PpL2Ki4S26Ka8sHUai8RQPNPqE3zDEDmapGqbp1O1ZD2rQfovarVSVubHfYraIqaLKmBr7jnbjHtS/9N1NceR39uLc8b9VRdEJI=",
"code": "QCAq+ip7g+i3BIx/YJjPEYKD2YiVOBSQupNwgHrGSgfbQhlt2kQUEqvaDVL3pTFzGH3l0TrM6gEHtjqWGurv8EYVAk2JNnZHRImpo0X9wBeCKd73RqFvFQ4gYXu+oVGFMf7AojB7runnutjU3EM3kAxnIwmKgF9VuemM1V0nRwaZoSUlbKqgZLMdea2I7ZMWtatfAS5VQkOJJMdUqjJpkoWYaFSC+BFm0UNZtvlPdr3pCAl6ksxqz3lESgLfxbwhfTa5SENtRd/lHQMjqyenD/ELEeuAFa3EZp1M5QUW+iahg7aO1y9Vk3Q4kMt07ecH5WdBAKxmZZIs+F5LqQ8yUA=="
}
sign_ok = verify_signature(json_data["code"])
plain = decrypt_msg(json_data["msg"])
print("="*60)
print({"msg": plain, "code": sign_ok})
print("="*60)
手机用的 |
|