實際上,我正在解密使用c#中的powershell創建的字符串。使用自定義密鑰解密SecureString
我創建了SecureString的以下PowerShell命令:
ConvertTo-SecureString -String "TopSecret" -AsPlainText -Force | ConvertFrom-SecureString
我解密SecureString的使用下面的C#代碼:
string exportedData = string.Empty;
bool SecureStringOK = true;
try
{
// Read args[0] to string
exportedData = args[0];
}
catch (System.IndexOutOfRangeException)
{
Console.WriteLine("NO_SECURESTRING");
Debug.WriteLine("NO_SECURESTRING");
SecureStringOK = false;
}
if (SecureStringOK)
{
// Decrypt the byte array to Unicode byte array
try
{
// Remove all new-lines
exportedData = exportedData.Replace(Environment.NewLine, "");
// Convert the hex dump to byte array
int length = exportedData.Length/2;
byte[] encryptedData = new byte[length];
for (int index = 0; index < length; ++index)
{
encryptedData[index] = byte.Parse(exportedData.Substring(2 * index, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture);
}
byte[] data = ProtectedData.Unprotect(encryptedData, (byte[])null, DataProtectionScope.CurrentUser);
// Convert Unicode byte array to string
string password = Encoding.Unicode.GetString(data);
// Write Output
Console.WriteLine(password);
Debug.WriteLine(password);
}
catch (System.Security.Cryptography.CryptographicException)
{
Console.WriteLine("WRONG_SECURESTRING: " + args[0]);
Debug.WriteLine("WRONG_SECURESTRING: " + args[0]);
}
catch (System.FormatException)
{
Console.WriteLine("WRONG_SECURESTRING_FORMAT: " + args[0]);
Debug.WriteLine("WRONG_SECURESTRING_FORMAT: " + args[0]);
}
}
這工作正常,在這兩個方向,但現在我創建SecureString的中Powershell與我自己的密鑰文件:
ConvertTo-SecureString -String "TopSecret" -AsPlainText -Force | ConvertFrom-SecureString -Key $KeyPath
任何想法什麼我必須改變在C#代碼使用特定的密鑰文件?