Internal server errors are usually errors that the Anvil staff needs to investigate. It helps them if you can create a minimal app that shows the error and post the clone link.
A simple object column is used to hold structured data that can be stored as a JSON string. An encrypted string is just a string, it is not JSON. You might as well hold the encrypted string in a string column, a simple object column is overkill.
anvil.secrets.encrypt_with_key is, as far as I can tell, intended to convert a plaintext string into an encrypted string. You’re passing a list in. I don’t know if that’s supported or not, but you can experiment with that by printing out the result, trying to decrypt the result to see what you get out of it, etc.
Not impossible, you just need more steps. If you need a plaintext string to encrypt, you can use Python’s JSON module to convert your list into a JSON string. Then you can encrypt the string.