Hello,

I'm generating a key using Scrypt from a password supplied by the user. I
then use this key as follows. This works but my question to the experts: is
this an acceptable way to use the AESGCMSIV cipher? Am I doing something
that's fundamentally against best practices? In the examples on the
Cryptography site, the sample code snippet uses AESGCMSIV.generate_key()
method to generate the key instead. The requirement I have is to generate
the key that's based on a password.

def gen_salt(size=32):
  return secrets.token_bytes(size)

def der_key(salt, password):
  kdf = Scrypt(salt=salt, length=32, n=2**20, r=8, p=1)
  return kdf.derive(password.encode())

def gen_symmkey(salt, password):
  symmkey = der_key(salt, password)
  return symmkey

 key = gen_symmkey(salt, password)
 aesgcmsiv = AESGCMSIV(key)

ct = aesgcmsiv.encrypt(nonce, file_data, aad)
with open(fname, "wb") as outfile:
     outfile.write(ct)

Best,
PE
_______________________________________________
Cryptography-dev mailing list
Cryptography-dev@python.org
https://mail.python.org/mailman/listinfo/cryptography-dev

Reply via email to