VB.NET-使用AES密钥文件解密文件中已加密的密码

时间:2020-08-04 17:43:20

标签: vb.net encryption aes

我需要将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

我使用了链接

  1. 生成加密的密码
  2. 以上PS代码基于的内容。

How to Encrypt Passwords in PowerShell

0 个答案:

没有答案