using System.Security.Cryptography;
namespace EncryptionExample
static void Main(string[] args)
byte[] key = new byte[32];
using RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
int originalNumber = 12345;
byte[] encryptedData = EncryptInteger(originalNumber, key);
string encodedData = Convert.ToBase64String(encryptedData);
string urlEncodedData = UrlEncode(encodedData);
string urlDecodedData = UrlDecode(urlEncodedData);
byte[] decodedData = Convert.FromBase64String(urlDecodedData);
int decryptedNumber = DecryptInteger(decodedData, key);
Console.WriteLine("Encryption key:");
Console.WriteLine(Convert.ToBase64String(key));
Console.WriteLine($"Original number: {originalNumber}");
Console.WriteLine($"Encrypted data (base64): {encodedData}");
Console.WriteLine($"Encoded and URL encoded data: {urlEncodedData}");
Console.WriteLine($"URL decoded and base64 decoded data: {urlDecodedData}");
Console.WriteLine($"Decrypted number: {decryptedNumber}");
static byte[] EncryptInteger(int number, byte[] key)
byte[] iv = new byte[16];
using Aes aes = Aes.Create();
using var encryptor = aes.CreateEncryptor();
byte[] dataToEncrypt = BitConverter.GetBytes(number);
byte[] encryptedData = encryptor.TransformFinalBlock(dataToEncrypt, 0, dataToEncrypt.Length);
static int DecryptInteger(byte[] encryptedData, byte[] key)
byte[] iv = new byte[16];
using Aes aes = Aes.Create();
using var decryptor = aes.CreateDecryptor();
byte[] decryptedData = decryptor.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
int decryptedNumber = BitConverter.ToInt32(decryptedData);
static string UrlEncode(string text)
return Uri.EscapeDataString(text);
static string UrlDecode(string text)
return Uri.UnescapeDataString(text);