How to Convert SecureString to String in C#?
We securely convert a secureString containing the sensitive data "mySecretPassword" to a regular String. Once the conversion is done, we clear the SecureString and free the memory allocated for the BSTR pointer to maintain security.
using System;
using System.Runtime.InteropServices;
using System.Security;
class Program
{
    static void Main()
    {
        // Step 1: Create a SecureString
        SecureString secureString = new SecureString();
        string sensitiveData = "mySecretPassword";
        foreach (char c in sensitiveData)
        {
            secureString.AppendChar(c);
        }
        // Step 2: Convert SecureString to BSTR pointer
        IntPtr bstrPtr = Marshal.SecureStringToBSTR(secureString);
        // Step 3: Convert BSTR pointer to String
        string regularString = Marshal.PtrToStringBSTR(bstrPtr);
        // Output the converted String
        Console.WriteLine("Converted String: " + regularString);
        // Step 4: Clear SecureString and free memory
        secureString.Clear();
        Marshal.ZeroFreeBSTR(bstrPtr);
    }
}
Output:
Converted String: mySecretPassword


Comments (0)