[ What is AES encryption] https://www.comparitech.com/blog/information-security/what-is-aes-encryption/ [ python random vs urandom ] https://stackoverflow.com/questions/47514695/whats-the-difference-between-os-urandom-and-random [ python urandom ] https://www.geeksforgeeks.org/python-os-urandom-method/ [ CryptAcquireContext ] https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptacquirecontexta [ 4th param: PROV_RSA_AES ] https://docs.microsoft.com/en-us/windows/win32/seccrypto/cryptographic-provider-types [ CreateCreateHash ] https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptcreatehash [ CryptHashData ] https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-crypthashdata [ CryptDeriveKey ] https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptderivekey [ CryptDecrypt ] https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptdecrypt