from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes,serialization import json import time import traceback def validate_license(public_key_pem, license_json, signature): public_key = serialization.load_pem_public_key(public_key_pem) try: public_key.verify( signature, license_json, padding.PKCS1v15(), hashes.SHA256() ) except: #打印异常信息 traceback.print_exc() return False license_data=json.loads(license_json.decode()) # 检查是否过期 if time.time()>license_data["expiration_time"]: return False return True if __name__ == '__main__': with open("license_issued/public.key","rb") as f: public_key_pem = f.read() with open("license_issued/license_issued.lic","rb") as f: data = json.loads(f.read()) license_json = json.dumps(data, sort_keys=True).encode() with open("license_issued/license_issued.key","rb") as f: signature = f.read() if validate_license(public_key_pem,license_json, signature): print("许可证有效!") else: print("许可证无效或已过期!")