using static System.Runtime.InteropServices.Marshal;
public static void Main()
SecureString secStr = new SecureString();
foreach (Char ch in "Camilo".ToCharArray()) { secStr.AppendChar(ch); }
IntPtr pointer1 = SecureStringToBSTR(secStr);
IntPtr pointer2 = SecureStringToGlobalAllocUnicode(secStr);
string str1 = PtrToStringUni(pointer1);
string str2 = PtrToStringUni(pointer2);
Console.WriteLine("Cyphered String: "+secStr.ToString());
Console.WriteLine("Decyphered String: "+str1);
Console.WriteLine("Unmanaged Ptr: "+ str2);
ZeroFreeGlobalAllocUnicode(pointer2);