Jump to content
Sign in to follow this  
ineedhelp

ConvertTo-SecureString : Die Eingabezeichenfolge hat das falsche Format

Recommended Posts

Hallo.

 

Ich habe mir folgendes PowerShell-Skript "zusammengebastelt" und bekomme bei der Ausführung den Fehler: "ConvertTo-SecureString : Die Eingabezeichenfolge hat das falsche Format."

 

Class Crypt
{
    # Ohne den winzigen Anpassungen ist der Quellcode hier zu finden ->
    # Link: http://get-powershell.com/post/2008/12/13/Encrypting-and-Decrypting-Strings-with-a-Key-in-PowerShell.aspx
    Static [System.String]DecryptData([System.Byte[]]$Key, [System.String]$Data)
    {
        [System.String]$plainText = [System.String]::Empty

        $Data |
            ConvertTo-SecureString -key $Key |

            ForEach-Object {
                $plainText = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($PSItem))
            }

        return $plaintext
    }
    
    Static [System.Byte[]]GenerateKey([System.String]$string)
    {
        [System.Text.ASCIIEncoding]$encoding = New-Object -TypeName System.Text.ASCIIEncoding
        return $encoding.GetBytes($string.PadRight(32, "0"))
    }

    Static [System.String]EncryptData([System.Byte[]]$Key, [System.String]$Text)
    {
        [System.Security.SecureString]$secureString = New-Object -TypeName System.Security.SecureString

        [System.Char[]]$chars = $Text.ToCharArray()
        foreach ($char in $chars) {
            $secureString.AppendChar($char)
        }

        [System.String]$encryptedData = ConvertFrom-SecureString -SecureString $secureString -Key $Key
        return $encryptedData
    }
}

#region === Test ===
Class Configuration
{
    [System.String]$MySqlHost      = [System.String]::Empty
    [System.String]$BackupUserName = [System.String]::Empty
    [System.String]$BackupUserPSW  = [System.String]::Empty
    [System.String]$BackupLocation = [System.String]::Empty
    [ValidateRange(1,30)]
    [System.Int16]$RetentionTime   = 14
    Hidden[System.Byte[]]$Key      = [Crypt]::GenerateKey("dakfjadlkdf3")

    ScriptConfiguration()
    {
    }

    [void]Load([System.String]$Path)
    {
        if ( -not(Test-Path $Path) )
        {
            throw "Datei existiert nicht."
        }

        Get-Content -Path $Path |
            ForEach-Object{     
                [System.String[]]$line = [System.Text.RegularExpressions.Regex]::Split($PSItem, "=")
                if ( ($line[0].CompareTo("") -ne 0) -and ($line[0].StartsWith("[") -ne $true) )
                {
                    switch ($($line[0].Trim()))
                    {
                        "mysql_host"      { $this.MySqlHost      = $($line[1].Trim()) }
                        "backup_dir"      { $this.BackupLocation = $($line[1].Trim()) }
                        "backupuser_name" { $this.BackupUserName = $($line[1].Trim()) }
                        "backupuser_psw"  { $this.BackupUserPSW  = $($line[1].Trim()) }
                        "retention_time"  { $this.RetentionTime  = $($line[1].Trim()) }
                    }
                }
            }
    }

    [void]Save([System.String]$Path)
    {
        [System.IO.FileInfo]$OutFile = New-Item -Path $Path -ItemType File -Force
        Add-Content -Path $OutFile -Value "[mysqlbackup]"
        Add-Content -Path $OutFile -Value "mysql_host      = $($this.MySqlHost)"
        Add-Content -Path $OutFile -Value "backup_dir      = $($this.BackupLocation)"
        Add-Content -Path $OutFile -Value "backupuser_name = $($this.BackupUserName)"
        Add-Content -Path $OutFile -Value "backupuser_psw  = $($this.BackupUserPSW)"
        Add-Content -Path $OutFile -Value "retention_time  = $($this.RetentionTime)"
    }
}

[Configuration]$Config = New-Object -TypeName Configuration
$Config.MySqlHost        = "localhost"
$Config.BackupLocation   = "C:\BackUps"
$Config.BackupUserName   = "backuser"
$Config.BackupUserPSW    = [Crypt]::EncryptData($Config.Key, "123")
$Config.RetentionTime    = "7"
"Vor der Speicherung"
"Kennwort verschluesselt: $($Config.BackupUserPSW)"
"Kennwort entschluesselt: $([Crypt]::DecryptData($Config.Key, $Config.BackupUserPSW))"

$Config.Save("C:\Test\mysqlbackup.cfg")

"Nach der Speicherung"
$Config.Load("C:\Test\mysqlbackup.cfg")
"Kennwort verschluesselt: $($Config.BackupUserPSW)"
"Kennwort entschluesselt: $([Crypt]::DecryptData($Config.Key, $Config.BackupUserPSW))"
#endregion === Test ===

 

Die Ausgabe sieht wie folgt aus:

 

Vor der Speicherung
Kennwort verschluesselt: 76492d1116743f0423413b16050a5345MgB8AGsASAAwAE0ATgBqAG4AWQBKADQAbwAzAEgAYQBUAFAAOABFAGsANgByAEEAPQA9AHwAYgA1ADYANgAwADUAZQBkADQAMgBjADUAYgA5ADUAYQA1ADUAZAA0AGMAMAA2ADUANgA0AGEANgAwAGYAMQBmAA==
Kennwort entschluesselt: 123
Nach der Speicherung
Kennwort verschluesselt: 76492d1116743f0423413b16050a5345MgB8AGsASAAwAE0ATgBqAG4AWQBKADQAbwAzAEgAYQBUAFAAOABFAGsANgByAEEAPQA9AHwAYgA1ADYANgAwADUAZQBkADQAMgBjADUAYgA5ADUAYQA1ADUAZAA0AGMAMAA2ADUANgA0AGEANgAwAGYAMQBmAA
ConvertTo-SecureString : Die Eingabezeichenfolge hat das falsche Format.
In Zeile:10 Zeichen:13
+             ConvertTo-SecureString -key $Key |
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [ConvertTo-SecureString], FormatException
    + FullyQualifiedErrorId : System.FormatException,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand
 
Kennwort entschluesselt: 

 

Warum schneidet PowerShell die letzten Zeichen bei der Speicherung ab? Liegt es an der Codierung der Textdatei? Wie kann ich es lösen? Ich möchte nicht einfach die fehlenden Zeichen an die Zeichenfolge ranhängen.

 

VIelen Dank im Voraus.

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...