![](/img/trans.png)
[英]SecureString password from C# to PowerShell with ProcessStartInfo
[英]Decrypt SecureString from Powershell with C#
我有以下Powershell代碼來加密密碼
$my_secure_password = convertto-securestring "myPW" -asplaintext -force $my_encrypted_string = convertfrom-securestring $my_secure_password -key(1..16)
輸出類似於此76492d1116743f0423413b16050a5345MgB8AHMASgB1AFMARwBxAFMAYgA1AFIAYwAyAE4AOABqAHMAOQBaADgAbwBGAEEAPQA9AHwANwBk ................
如何在C#中解密此輸出,以便將其用作C#中的SecureString?
我已經測試過類似的東西,但這對我不起作用
var runSpace_new = RunspaceFactory.CreateRunspace();
runSpace_new.Open();
PowerShell PSinstance = PowerShell.Create();
PSinstance.AddScript("$decrypt = convertto-securestring -key (1..16) -string 76492d1116743f0423413b.......");
var psOutput_new = PSinstance.Invoke();
var a = runSpace_new.SessionStateProxy.PSVariable.GetValue("decrypt");
但是a為空。
更新我已經找到了解決方案:
SecureString new_sec_pass = new SecureString();
PowerShell instance = PowerShell.Create();
instance.AddScript("convertto-securestring -key (1..16) -string 76492d1...");
foreach (PSObject psOutput in instance.Invoke())
{
new_sec_pass = psOutput.BaseObject as SecureString;
}
PSCredential new_credentials = new PSCredential(Username, new_sec_pass);
您可以嘗試一下(也許對您有幫助-對我-這是工作):
using System.Collections.ObjectModel;
using System.Management.Automation;
static void Main(string[] args)
{
var variable = PowerShell.Create().AddScript("$xtr = convertto-securestring -key (1..16) -string" +
" '76492d1116743f0423413b16050a5345MgB8AEQAbQBIAEIASQB6ADcAeQA0AH" +
"UAaAB6AFEAawBJAEYAVAA0AHcAUwBoAGcAPQA9AHwAMQAzAGUANwBmADIAOAAxADEANwAwAGUAZQBjADMANwBlAG" +
"QAYQAxADcAZABlADEAMQBhAGYAZgBiADkAOQBiADIAMAAwAGMAMgA1AGEAZgAxADcAMABhADAAYwBjAGIAMQBhADAAZAAwADMAMwAzADMAOQAwADcAYQAzAGMANwA='" +
";$PwdPointer = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($xtr);"+
"$PlainTextPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto($PwdPointer);$PlainTextPassword").AddCommand("out-string");
Collection<PSObject> results = variable.Invoke();
foreach (var str in results)
{
Console.WriteLine(str);
Console.ReadKey();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.