Вы можете склеить кодовую фразу или пароль на диске.
следующее решение: компьютер как пользователь.
Следующие два скрипта - сборка securot framework .NET.
Для серверных компьютеров можно защитить секретность компьютера. Этот код использует тот факт, что любые люди, которые могут запускать код на компьютере, могут получить доступ к паролю. Таким образом, файл passwword можно обменивать по сети, он может быть декодирован только самим сервером. Вы можете добавить ACL в файл пароля, чтобы он мог быть прочитан только некоторой группой пользователей.
криптовальную (должно быть сделано на компьютере сервера):
# Mandatory Framework .NET Assembly
Add-Type -assembly System.Security
# String to Crypt
$passwordASCII = Read-Host -Prompt "Entrer le mot de passe"
# String to INT Array
$enc = [system.text.encoding]::Unicode
$clearPWD_ByteArray = $enc.GetBytes($passwordASCII.tochararray())
# Crypting
$secLevel = [System.Security.Cryptography.DataProtectionScope]::LocalMachine
$bakCryptedPWD_ByteArray = [System.Security.Cryptography.ProtectedData]::Protect($clearPWD_ByteArray, $null, $secLevel)
# Store in Base 64 form
$B64PWD_ByteArray = [Convert]::ToBase64String($bakCryptedPWD_ByteArray)
Set-Content -LiteralPath c:\Temp\pass.txt -Value $B64PWD_ByteArray
Декодирование:
# Mandatory Framework .NET Assembly
Add-Type -assembly System.Security
# Getting from Base 64 storage
$resCryptedPWD_ByteArray = [Convert]::FromBase64String((Get-Content -LiteralPath c:\Temp\pass.txt))
# Decoding
$secLevel = [System.Security.Cryptography.DataProtectionScope]::LocalMachine
$clearPWD_ByteArray = [System.Security.Cryptography.ProtectedData]::Unprotect($resCryptedPWD_ByteArray, $null, $secLevel)
# Dtring from int Array
$enc = [system.text.encoding]::Unicode
$enc.GetString($clearPWD_ByteArray)
Спасибо, JPBlanc. Если я правильно понимаю, я шифрую парольную фразу один раз, а часть декодирования включается в мой скрипт. Я тестировал его, и он отлично работает, но я не могу понять, какая переменная содержит расшифрованную кодовую фразу, чтобы использовать ее в моих параметрах gpg2.exe. – culter
ОК, я решил. Я включаю часть декодирования в свой скрипт и использую $ end.GetString ($ clearPWD_ByteArray) как кодовую фразу. Пожалуйста, подтвердите, является ли этот метод правильным (безопасным). Благодарю. – culter
Кодовая фраза находится в '$ enc.GetString ($ clearPWD_ByteArray)' – JPBlanc