我需要将Powershell转换为VB.NET的帮助。
执行命令需要特权,我提供了加密的用户名和密码,并使用Powershell使用key参数和.aes文件路径进行调用。
阶段1:GUI调用Powershell脚本,包括加密的密码。它可以工作,但是调用Powershell脚本的速度很慢。
我正在转换我可以使用SDK连接的所有功能,并且希望将解密功能转换为VB,而不是调用powershell。
我的加密密码和AES密钥在文件中。找到的例子对我不起作用。具体来说,SDK连接依靠SecureString来将密码传递给SDK连接,但不能将值转换为SecureString。
我可以使用SecureString,并且在调试期间看不到该方法中执行Powershell的方法,无法获取加密的密码并将其通过管道传输到ConvertTo-SecureString并将密钥参数作为我的AES文件传递。
示例加密/解密建议将其增强,我可以使用它代替,连接到SDK的命令需要SecureString,因此我必须尝试从文件中获取信息并将其转换为SecureString,但可以'找出方法。
我更喜欢像在PS中一样读取文件,然后转换为SecureString。
到目前为止,我已经完成了这个工作,将加密的密码和aes文件传递到了我的位置。调试通过了它,没有问题(我相信),但是我得到了转换为SecureString的异常,并且在追加字符的循环中,我遇到了有关权限不足的异常,这使我相信它没有像我期望的那样解密
Private Function AESD(ByVal ciphertext As String, ByVal key As String) As String
Dim AES As New System.Security.Cryptography.RijndaelManaged
Dim SHA256 As New System.Security.Cryptography.SHA256Cng
Dim plaintext As String = ""
Dim iv As String = ""
Try
Dim ivct = ciphertext.Split({"=="}, StringSplitOptions.None)
iv = ivct(0) & "=="
ciphertext = If(ivct.Length = 3, ivct(1) & "==", ivct(1))
AES.Key = SHA256.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(key))
AES.IV = Convert.FromBase64String(iv)
AES.Mode = Security.Cryptography.CipherMode.CBC
Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateDecryptor
Dim Buffer As Byte() = Convert.FromBase64String(ciphertext)
plaintext = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
Return plaintext
Catch ex As Exception
Return ex.Message
End Try
End Function
解密可能不适用于加密。我需要通过为用户预先存储加密的密码来使其安静运行。
[编辑]:这是用于输入加密密码的Powershell
$password = Get-Content "locationtopasswordfile" | ConvertTo-SecureString -Key (Get-Content "locationtoAESkeyfile")
$credential = New-Object -typename System.Management.Automation.PSCredential -argumentlist "domainaccount",$password
我使用了链接