import hashlib
from sympy import nextprime
from Crypto.PublicKey import RSA
from Crypto.Signature import pss
from Crypto.Hash import SHA256
from Crypto.Util.number import inverse

TARGET_USER = "admin"
TARGET_MESSAGE = "Hello"

def generate_admin_key():
    print(f"[*] Generating deterministic 512-bit key for: {TARGET_USER}")

    # Deterministic seed
    seed_str = f"{TARGET_USER}_lovenote_2026_valentine"
    seed_bytes = seed_str.encode()

    # Generate p
    sha256_p = hashlib.sha256(seed_bytes).hexdigest()
    p = nextprime(int(sha256_p, 16))

    # Generate q
    sha256_q = hashlib.sha256(seed_bytes + b"pki").hexdigest()
    q = nextprime(int(sha256_q, 16))

    n = p * q
    e = 65537
    phi = (p - 1) * (q - 1)
    d = inverse(e, phi)

    key = RSA.construct((n, e, d, p, q))

    modBits = key.size_in_bits()
    h = SHA256.new(TARGET_MESSAGE.encode())

    emLen = (modBits - 1 + 7) // 8
    maxSalt = emLen - h.digest_size - 2

    print(f"[*] Key size: {modBits} bits")
    print(f"[*] EM Length: {emLen} bytes")
    print(f"[*] Calculated Max Salt: {maxSalt} bytes")

    if maxSalt < 0:
        raise ValueError("Key too small for PSS padding.")

    signer = pss.new(key, salt_bytes=maxSalt)
    signature = signer.sign(h)

    return signature.hex()


if __name__ == "__main__":
    try:
        signature = generate_admin_key()

        print("\n" + "="*60)
        print(" >>> FINAL ZEUS SIGNATURE <<< ")
        print("="*60)
        print(signature)
        print("="*60)
        print("1. Go to Verify page.")
        print("2. User: zeus")

    except Exception as e:
        print(f"[!] Error: {e}")

And Boom You will got the Flag.