using System.Security.Cryptography;
public static void Main()
Console.WriteLine(EncryptId(idPerson,"owrngvowrhgoi4eht_!@#T$dsfnasolfb"));
public static string EncryptId(long value, string password)
var key = DeriveKey(password);
using var aesAlg = Aes.Create();
aesAlg.IV = new byte[16];
using var encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using var msEncrypt = new MemoryStream();
using var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);
var buffer = BitConverter.GetBytes(value);
csEncrypt.Write(buffer, 0, buffer.Length);
csEncrypt.FlushFinalBlock();
return Convert.ToBase64String(msEncrypt.ToArray()); ;
public static long DecryptId(string encryptedId, string password)
var cipherText = Convert.FromBase64String(encryptedId);
var key = DeriveKey(password);
using var aesAlg = Aes.Create();
aesAlg.IV = new byte[16];
using var decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using var msDecrypt = new MemoryStream(cipherText);
using var csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);
byte[] buffer = new byte[sizeof(long)];
csDecrypt.Read(buffer, 0, buffer.Length);
return BitConverter.ToInt64(buffer, 0);
private static byte[] DeriveKey(string password)
using var keyGenerator = new Rfc2898DeriveBytes(password, Encoding.UTF8.GetBytes("Salt"), 10000);
return keyGenerator.GetBytes(16);