public EncryptedData Encrypt(EncryptionStrength strength, string str) { if (string.IsNullOrWhiteSpace(str)) { return(new EncryptedData { IsEmpty = true }); } var hash = Hash(strength, str, false); var ekey = _encryptionKey; using (var aes = Aes.Create()) { aes.Key = Convert.FromBase64String(ekey); var encrypted = AesEncryption.EncryptStringToBytes_Aes(str, aes.Key, aes.IV); var result = new byte[aes.IV.Length + encrypted.Length]; aes.IV.CopyTo(result, 0); encrypted.CopyTo(result, 16); return(new EncryptedData { IsEmpty = false, Hash = hash, Encrypted = Convert.ToBase64String(result) }); } }
public string Decrypt(string str) { byte[] ivPlusMessage = Convert.FromBase64String(str); byte[] message = new byte[ivPlusMessage.Length - 16]; byte[] iv = new byte[16]; Array.ConstrainedCopy(ivPlusMessage, 0, iv, 0, 16); Array.ConstrainedCopy(ivPlusMessage, 16, message, 0, ivPlusMessage.Length - 16); var ekey = _encryptionKey; var decrypted = AesEncryption.DecryptStringFromBytes_Aes(message, Convert.FromBase64String(ekey), iv); return(decrypted); }