# Secret Key Cryptography ```python %load_ext sql ``` ```python %config SqlMagic.feedback=False %config SqlMagic.displaycon=False %sql postgresql://postgres@/ ``` ```sql %%sql CREATE EXTENSION IF NOT EXISTS pgsodium; ``` [] ## Authenticated Encryption ### `crypto_secretbox_keygen()` ```python key = %sql select pgsodium.crypto_secretbox_keygen() key = key[0][0].tobytes() print(key) ``` b"\xb7\x8e\x1f\xefc\xc8\xaa\x9b\xd45\xa5\xf2\x14'\n\xeb\x82\x9a\x945\x07Z}\xf33\x17JA\x84\xa7}f" ### `crypto_secretbox_noncegen()` ```python nonce = %sql select pgsodium.crypto_secretbox_noncegen() nonce = nonce[0][0].tobytes() print(nonce) ``` b'\x08\xa8\xf4O\xfe8\x03\xd5\x02\x8b\x9e\xce\n*\xe8\xec\x02U\x00x(\xe0\x1d\xea' ### `crypto_secretbox(message bytea, nonce bytea, key bytea)` ```python ciphertext = %sql select pgsodium.crypto_secretbox('bob is your uncle', :nonce, :key) ciphertext = ciphertext[0][0].tobytes() print(ciphertext) ``` b'\n!\x03\xa1x\n\xdd<*\xa07o\xde\xcb,"t\xce\xa1\xb0\x13nX\xf9#q\xe8\xedo\x19~.\xb0' ### `crypto_secretbox_open(ciphertext bytea, nonce bytea, key bytea)` ```python message = %sql select pgsodium.crypto_secretbox_open(:ciphertext, :nonce, :key) message = message[0][0].tobytes() print(message) ``` b'bob is your uncle'