windows - Gem en tekst i krypteret form og brug i powershell script uden at gå på kompromis med det til andre brugere?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil kryptere en tekst, som jeg vil bruge i forskellige PowerShell script uden at gå på kompromis med dets sikkerhed, da andre brugere vil bruge scripts, der vil indeholde den tekst. Dybest set vil jeg skjule den tekst fra alle og bruge den uden besvær til alle PowerShell-scripts, der bruger den pågældende tekst. Tekst kan gemmes i en fil, så den bliver brugt i forskellige scripts. Jeg har forsøgt grundlæggende ting som:


$text = Read-Host "Enter the text" -AsSecureString

$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($text)

$Plaintext = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
Write-Host "Text is: " $PlainText


Men det er nemt at finde, hvis du er i samme computer. Jeg har brug for noget idiotisk metode hvis nogen. Dette er mit første spørgsmål, så vær venlig at ignorere mine fejl, hvis nogen.

Bedste reference


I dit tilfælde har du brug for en bestemt nøgle til at gøre strengen krypteret.


Til indstilling af nøglen :


function Set-Key {
param([string]$string)
$length = $string.length
$pad = 32-$length
if (($length -lt 16) -or ($length -gt 32)) {Throw "String must be between 16 and 32 characters"}
$encoding = New-Object System.Text.ASCIIEncoding
$bytes = $encoding.GetBytes($string + "0" * $pad)
return $bytes
}


Til indstilling af de krypterede data:


function Set-EncryptedData {
param($key,[string]$plainText)
$securestring = new-object System.Security.SecureString
$chars = $plainText.toCharArray()
foreach ($char in $chars) {$secureString.AppendChar($char)}
$encryptedData = ConvertFrom-SecureString -SecureString $secureString -Key $key
return $encryptedData
}


Til dekryptering af dataene:


function Get-EncryptedData {
param($key,$data)
$data | ConvertTo-SecureString -key $key |
ForEach-Object {[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($\_))}
}


Sådan bruges:


$plainText = "Some Super Secret Password"
$key = Set-Key "AGoodKeyThatNoOneElseWillKnow"
$encryptedTextThatIcouldSaveToFile = Set-EncryptedData -key $key -plainText $plaintext
$encryptedTextThatIcouldSaveToFile  ## - sample output 507964ed3a197b26969adead0212743c378a478c64007c477efbb21be5748670a7543cb21135ec324e37f80f66d17c76c4a75f6783de126658bce09ef19d50da
$DecryptedText = Get-EncryptedData -data $encryptedTextThatIcouldSaveToFile -key $key
$DecryptedText


Reference Link: Kryptering & Dekryptere strings med PS [6]


Håber det hjælper.