.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Linq;	
using System.Text ;
using System.IO;
using System.Security.Cryptography;
public class Program
	
{
	 static public string EncodeTo64(string toEncode)

    {

      byte[] toEncodeAsBytes

            = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);

      string returnValue

            = System.Convert.ToBase64String(toEncodeAsBytes);

      return returnValue;

    }
	public static string Encrypt(string data, string key, string iv)
	{
		//===== data
		var bytes = Encoding.UTF8.GetBytes(data);
		//===== AES provider
		var provider = new AesCryptoServiceProvider();
		provider.Mode = CipherMode.CBC;
		provider.Key = Encoding.UTF8.GetBytes(key);
		provider.IV = Encoding.UTF8.GetBytes(iv);
		var transform = provider.CreateEncryptor();
		//===== encrypt
		using (var ms = new MemoryStream())
		{
			using (var cs = new CryptoStream(ms, transform, CryptoStreamMode.Write))
			{
				cs.Write(bytes, 0, bytes.Length);
				cs.FlushFinalBlock();
			}
			//===== encrypted data
			var sb = new StringBuilder();
			foreach (var b in ms.ToArray())
			{
				sb.Append(b.ToString("X2"));
			}
			return sb.ToString();
		}
	}
	public static string Decrypt(string hexString, string key, string iv)
	{
		var bytes = Enumerable.Range(0, hexString.Length)
			.Where(x => x % 2 == 0)
			.Select(x => Convert.ToByte(hexString.Substring(x, 2), 16))
			.ToArray();
		//===== AES provider
		var provider = new AesCryptoServiceProvider();
		provider.Mode = CipherMode.CBC;
		provider.Key = Encoding.UTF8.GetBytes(key);
		provider.IV = Encoding.UTF8.GetBytes(iv);
		var transform = provider.CreateDecryptor();
		using (var ms = new MemoryStream(bytes))
		{
			using (var cs = new CryptoStream(ms, transform, CryptoStreamMode.Read))
			{
				using (var sr = new StreamReader(cs))
				{
					cs.Flush();
					var plainText = sr.ReadToEnd();
					return plainText;
				}
			}
		}
	}
	public static void Main()
	{
		//working
		var key = "36D65EA1F6A849AF9964E0BAA98096B3";
		var iv = "8E394493F1E54545";
		var encrypted = Encrypt("testing", key, iv);
		Console.WriteLine(encrypted);
		var decrypted = Decrypt(encrypted ,key, iv);
        Console.WriteLine(decrypted);
			
		//attempting to use a ruby-generated key/iv
		key = "65125495c896b9e73a7a79fd7ed21be034a05596d3c7d0b865fc40a67ccbdd03";
		iv = "4b1e02d778aa1131e0612ff2dc2f9c49";
		encrypted = Encrypt("testing", key, iv);
		Console.WriteLine(encrypted);
		decrypted = Decrypt(encrypted ,key, iv);
        Console.WriteLine(decrypted);
	}
}
;