• 1000
Этап 1: GUI с вызовами сценариев PowerShell, включая зашифрованный пароль. Он работает, но вызывает медленные вызовы сценариев PowerShell.
Я конвертирую все функции, которые могу использовать для подключения SDK, и хочу преобразовать функцию дешифрования в VB, а не вызывать powershell.
Мой зашифрованный пароль и ключ AES находится в файлах. Найденные примеры у меня не работают. В частности, соединение SDK полагается на SecureString для передачи пароля соединению SDK, но оно не может преобразовать значение в SecureString.
Я могу использовать SecureString, и во время отладки не вижу способа в этом методе делать то, что было выполнено с помощью Powershell, захватив зашифрованный пароль и направив его по конвейеру в ConvertTo-SecureString и передав параметр ключа в качестве моего файла AES.
Примеры шифрования / дешифрования советов по усилению его безопасности, которые я могу использовать вместо команде для подключения к SDK требуется SecureString, поэтому я должен попытаться получить информацию из файлов и преобразовать ее в SecureString, но не могу понять, как это сделать.
Я предпочитаю читать файлы, как в PS , преобразование в SecureString.
У меня есть это до сих пор, передавая мои местоположения для зашифрованного пароля и файла aes. Отладка проходит без проблем (я считаю), но я получаю исключения, преобразующиеся в SecureString, а в al oop для добавления символов я получаю исключение о недостаточных разрешениях, что заставляет меня думать, что он не расшифровывается как Я полагаю.
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
Я использовал ссылку на
- Сгенерировать зашифрованный пароль
- На чем основан приведенный выше код PS.
Как зашифровать пароли в PowerShell