Adding support for better AES Transformations that use an IV

The old  Crypto APIs did not support AES transformations, which require the use of the IV in the `Crypto.decryptAES(..)`
Hence if you used a transformation like `AES/CBC/PKCS5Padding` `Crypto.decryptAES(...)` would fail.

This should address issue #3594 
Since this secret key generation code is common to `encryptAES` and `decryptAES` maybe you could make a method for it?

```scala
def secretKeyWithSha256(privateKey: String, algorithm: String): SecretKeySpec = { ... }
```

If you do this then you may not need the separate `sha256` method any more.