3

gnupg を使用して、powershell スクリプトを介してデータを暗号化および復号化していますが、問題は、コードにパスフレーズがあることです。それはおそらく最善の解決策ではありません。スクリプトにパスフレーズを提供する最も安全な方法はどれですか? ありがとうございました。

C:\"Program Files"\GNU\GnuPG\gpg2.exe --passphrase mypassphrase --batch --output C:\Z\$decrypted_file.xls --decrypt C:\_Zo\$encrypted_file
4

1 に答える 1

4

ディスク上のパスフレーズまたはパスワードを暗号化できます。

次のソリューションでは、コンピューターをユーザーとして使用します。

次の 2 つのスクリプトは、securot フレームワーク .NET アセンブリです。

サーバー コンピューターの場合、コンピューター ID によってシークレットを保護することができます。このコードは、コンピュータ上でコードを実行できる人なら誰でもパスワードにアクセスできるという事実を利用しています。したがって、パスワードファイルはネットワーク全体で共有でき、サーバー自体によってのみデコードできます。パスワード ファイルに 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)
于 2012-04-16T12:00:14.593 に答える