Wallet password encryption does not use authentication or a correct nonce
Wallet passwords are stored [encrypted](https://github.com/cake-tech/cake_wallet/blob/a164e5defcd311ed0d13b989b24ffacfea75d60a/lib/entities/encrypt.dart#L44-L49), and are [decrypted](https://github.com/cake-tech/cake_wallet/blob/a164e5defcd311ed0d13b989b24ffacfea75d60a/lib/entities/encrypt.dart#L51-L56) when needed.

Similarly to #1169, this has a few issues:
- The underlying [encryption](https://github.com/cake-tech/cake_wallet/blob/a164e5defcd311ed0d13b989b24ffacfea75d60a/lib/entities/encrypt.dart#L5-L12) and [decryption](https://github.com/cake-tech/cake_wallet/blob/a164e5defcd311ed0d13b989b24ffacfea75d60a/lib/entities/encrypt.dart#L14-L21) use a fixed zero nonce. Because the encryption key is fixed, this will immediately leak to an attacker whether two encrypted blobs represent the same password.
- The decryption is not authenticated, as it uses AES-SIC mode (which is just an alias for AES-CTR mode). This means that if an attacker were to replace the ciphertext, decryption would still appear to succeed.
- The key construction is done by concatenating two values that don't appear to be documented: `secrets.shortKey` and `secrets.walletSalt`. This is nonstandard.

Here are some ideas to make this design more robust:
- Don't use the existing [`encrypt`](https://pub.dev/packages/encrypt) library if possible. I am not confident in some of their design decisions.
- Replace the unauthenticated AES-SIC mode with an authenticated mode like AES-GCM or XChaCha20-Poly1305. This will allow for immediate detection of manipulated ciphertext during the decryption process.
- Ensure that a properly-sampled nonce is used for each encryption. Note that random nonces are _not_ always safe; for this use case, you should be fine.
- Use a more standard key derivation process. This should be done by using independent keys for different use cases (like password hashing and encryption). Within an encryption use case, you can use the associated data field of an AEAD to bind different fields to avoid certain attacks.