Skip to content

Instantly share code, notes, and snippets.

@GZTimeWalker
Created December 30, 2023 21:07
Show Gist options
  • Save GZTimeWalker/3e85340afdc855869053449bdbbc1f3d to your computer and use it in GitHub Desktop.
Save GZTimeWalker/3e85340afdc855869053449bdbbc1f3d to your computer and use it in GitHub Desktop.
import os
import hashlib
import nacl.secret
import nacl.utils
def get_flag_env():
flag = os.getenv('GZCTF_FLAG')
if flag is None:
flag = 'GZT{this_is_a_test_flag}'
return flag
def get_key():
seed = hashlib.sha512(get_flag_env().encode()).digest()
key_size = nacl.secret.SecretBox.KEY_SIZE
nonce_size = nacl.secret.SecretBox.NONCE_SIZE
key = seed[:key_size]
nonce = seed[key_size:key_size+nonce_size]
return key, nonce
def enc_red_packet(red_packet):
key, nonce = get_key()
box = nacl.secret.SecretBox(key)
return box.encrypt(red_packet.encode(), nonce).ciphertext.hex()
def dec_red_packet(enc_red_packet):
key, nonce = get_key()
box = nacl.secret.SecretBox(key)
return box.decrypt(bytes.fromhex(enc_red_packet), nonce).decode()
if __name__ == '__main__':
print("key seed :", get_flag_env())
enc = enc_red_packet('这是一个测试红包')
print("encrypt :", enc)
dec = dec_red_packet(enc)
print("decrypt :", dec)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment