$password = Convertto-Securestring -String "PowerShellRocks!" -AsPlainText -Force
ConvertFrom-SecureString $password
рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ
рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╣реИ
PS /home/chythu/temp> ConvertFrom-SecureString $password ConvertFrom-SecureString : Unable to load DLL 'CRYPT32.dll': The specified
module could not be found.
(Exception from HRESULT: 0x8007007E)
At line:1 char:1
- ConvertFrom-SecureString $password
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CategoryInfo : NotSpecified: (:) [ConvertFrom-SecureString], Dl
lNotFoundException
- FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell
.Commands.ConvertFromSecureStringCommand
Name Value
---
PSVersion 5.1.10032.0
PSEdition PowerShellCore
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 3.0.0.0
GitCommitId v6.0.0-alpha.7
CLRVersion
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
> $PSVersionTable
Name Value
---- -----
PSVersion 6.0.2
PSEdition Core
GitCommitId v6.0.2
OS Darwin 17.5.0 Darwin Kernel Version 17.5.0: M...
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ
`` `Powershell
$ рдХреБрдВрдЬреА = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)
$ s | ConvertFrom-SecureString -Key $ рдХреБрдВрдЬреА
`` `
рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ CoreCLR рдХреА рдХрдореА рд╣реИред
@ рдХреГрд╖реНрдгрд╛-рдПрдордПрд╕рдПрдлрдЯреА рд╕реЗ рдмрд╛рдд рдХреА рдЧрдИред рдПрдЬрд╝реНрдпреЛрд░ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдЕрд▓реНрдлрд╛ 10 рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рдирд╛
MacOS 10.12 рдмреАрдЯрд╛ (16A270f) рдкрд░ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдЖрдпрд╛
рдмрд╕ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд░рд╣реА рдереА рдпрд╣ рдорд┐рд▓рд╛:
PS> $User="Jared"
PS> $PWord = ConvertTo-SecureString тАУString "TestString" тАУAsPlainText -Force
PS> $Cred = New-Object -TypeName "System.Management.Automation.PSCredential" тАУArgumentList $User, $PWord
PS> ConvertFrom-SecureString -SecureString ($Cred.Password)
рдкрд░рд┐рдгрд╛рдо:
ConvertFrom-SecureString : Unable to load DLL 'CRYPT32.dll': The specified module could not be found.
(Exception from HRESULT: 0x8007007E)
At line:1 char:1
+ ConvertFrom-SecureString -SecureString ($Cred.Password)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-SecureString], DllNotFoundException
+ FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell.Commands.ConvertFromSecureStringComman
рдирдорд╕реНрддреЗ,
рдореИрдк рдХрд┐рдП рдЧрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рддреНрд░реБрдЯрд┐: psdrive:
Get-ChildItem Cert:/LocalMachine/
рддреНрд░реБрдЯрд┐:
get-childitem: DLL 'crypt32.dll' рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛ред
(HRESULT рд╕реЗ рдЕрдкрд╡рд╛рдж: 0x8007007E)
рд▓рд╛рдЗрди рдореЗрдВ: 1 рдЪрд╛рд░: 1
- рдЧреЗрдЯ-рдЪрд╛рдЗрд▓реНрдбрд┐рдЯреЗрдо рдкреНрд░рдорд╛рдг рдкрддреНрд░: / LocalMachine /
~ ~~~~~~~~~
- рд╢реНрд░реЗрдгреАрдЗрдиреНрдлреЛ: рдЕрдзрд┐рд╕реВрдЪрд┐рдд: (:) [рд╕рдВрддрд╛рди рдкреНрд░рд╛рдкреНрддрд┐], DllNotFoundException
- FullQualifiedErrorId: System.DllNotFoundException, Microsoft.PowerShell.Commands.GetChildItemCommand
@ 35359595 рдЕрдЪреНрдЫреА рдЦреЛрдЬ! рддреНрд░реБрдЯрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд┐рддреНрд░рд╡рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд▓рд┐рдирдХреНрд╕ рдФрд░ macOS рдкрд░ Cert:/
рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпреЗ рджреЛрдиреЛрдВ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░реЛрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдПрдХ-рджреВрд╕рд░реЗ рдФрд░ рд╡рд┐рдВрдбреЛ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рд╣реИред
Fyi, 16.04.1 PowerShell v6 рдЕрд▓реНрдлрд╝рд╛ 14 рдХреЗ рд╕рд╛рде рдЕрднреА рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ
рдпрд╣ рдореБрдЭреЗ рдореЗрд░реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд▓рд╛рдиреЗ рд╕реЗ рд░реЛрдХ рд░рд╣рд╛ рд╣реИред рдореИрдВ рд╡реЗрдм рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреЛ рд╕рднреА рдУрдПрд╕ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬред
рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ .NET рдорд╛рдирдХ 2.0 API рдХреЗ рд╕рд╛рде рд╕рдХреНрд╖рдо рдХрд░ рдкрд╛рдПрдВрдЧреЗ рдЬреЛ SecureString рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдЧрд╛:
ConvertFrom-SecureString
рдФрд░ ConvertTo-SecureString
System.Security.Cryptography.ProtectedData
рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрднреА рднреА netstandard2.0
рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдЗрди 2 cmdlets рдХреЛ рдпреВрдирд┐рдХреНрд╕ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдЧрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдиреЗрдЯ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИ рддреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдВрдЧрд╛
рд╣рдо WinRM рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PSCredential рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓рд┐рдирдХреНрд╕ рдпрд╛ рдореИрдХрдУрдПрд╕ рдкрд░ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдирд╛ рдЕрднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рдЦреАрдВрдЪ рд░рд╣рд╛ рд╣реИред
рддреНрд░реБрдЯрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
ConvertTo-SecureString: DLL 'CRYPT32.dll' рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓рд╛ред
(HRESULT рд╕реЗ рдЕрдкрд╡рд╛рдж: 0x8007007E)
@ reddwarf666 рдкреИрдХреЗрдЬ System.Security.Cryptography.ProtectedData
nuget.org рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ netstandard2.0 рд╢рд┐рдХрд╛рдпрдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдореЗрдВ рдпреВрдирд┐рдХреНрд╕ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдпреВрдирд┐рдХреНрд╕ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП 'PlatformNotSupportedException' рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдпреВрдирд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП ConvertFrom/ConvertTo-SecureString
рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдпреВрдирд┐рдХреНрд╕ рдкрд░ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ .NET рдХреЛрд░ рдЯреАрдо рд╕реЗ рдХреБрдЫ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред / cc @joeyaiello
рдХреНрдпрд╛ [System.Runtime.InteropServices.Marshal] :: SecureStringToBSTR рдФрд░ [System.Runtime.InteropServices.Marshal] :: PtrToStringAuto рд╕рдВрднрд╡рддрдГ рд╕рд╡рд╛рд░реА рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВ?
рдЕрднреА рднреА рдореИрдХ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ 6.0.0-beta3 рдкрд░ рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП рд╕рд┐рдХреНрдпреЛрд░рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ cmdlets рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
ConvertFrom-SecureString: DLL 'CRYPT32.dll' рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде: рдирд┐рд░реНрджрд┐рд╖реНрдЯ
рдореЙрдбреНрдпреВрд▓ рдпрд╛ рдЗрд╕рдХреА рдХреЛрдИ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХреАред
(HRESULT рд╕реЗ рдЕрдкрд╡рд╛рдж: 0x8007007E)
linux debian (jessie 64bit) рдкрд░ Convertfrom-securestring рдФрд░ Convertto-securestring (v6.0.0-beta.3) рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рднреА рдРрд╕рд╛ рд╣реА рд╣реИ:
PS /> $PSVersionTable
Name Value
---- -----
PSVersion 6.0.0-beta
PSEdition Core
GitCommitId v6.0.0-beta.3
OS Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26)
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
PS />
PS /> read-host -assecurestring | convertfrom-securestring | out-file securestring.txt
********
convertfrom-securestring : Unable to load DLL 'CRYPT32.dll': The specified module or one of its dependencies could not be found.
(Exception from HRESULT: 0x8007007E)
At line:1 char:29
+ read-host -assecurestring | convertfrom-securestring | out-file secur ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-SecureString], DllNotFoundException
+ FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell.Commands.ConvertFromSecureStringCommand
md5-0a78a142751a1081c46c48e10b6cba93
PS /> $pass = cat securestring.txt | convertto-securestring
convertto-securestring : Unable to load DLL 'CRYPT32.dll': The specified module or one of its dependencies could not be found.
(Exception from HRESULT: 0x8007007E)
At line:1 char:32
+ $pass = cat securestring.txt | convertto-securestring
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertTo-SecureString], DllNotFoundException
+ FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand
md5-25ce90db07e4f9f61b58abd5cf739027
PS /> [Reflection.Assembly]::LoadFrom("CRYPT32.dll")
Exception calling "LoadFrom" with "1" argument(s): "Bad IL format."
At line:1 char:1
+ [Reflection.Assembly]::LoadFrom("CRYPT32.dll")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : BadImageFormatException
md5-0a78a142751a1081c46c48e10b6cba93
PS /> Add-Type -Path 'CRYPT32.dll'
Add-Type : Bad IL format.
At line:1 char:1
+ Add-Type -Path 'CRYPT32.dll'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-Type], BadImageFormatException
+ FullyQualifiedErrorId : System.BadImageFormatException,Microsoft.PowerShell.Commands.AddTypeCommand
рдХреЙрдкреА рдХрд░рдиреЗ / рдЕрдкрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП / Microsoft / powershell/6.0.0-beta.3/ рдФрд░ рдЬрдм рдкреВрд░реНрдг рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╕рдВрднрд╡ рд╣реИ / рдЬреНрдЮрд╛рдд рд╣реИ рдпрд╛ рдХреНрдпрд╛ рд╣рдореЗрдВ рдпрд╣ рддрдп рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛?
@vchrizz рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рдпреВрдирд┐рдХреНрд╕ рдмрд╛рдЗрдирд░реА рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдо рдпреВрдирд┐рдХреНрд╕ рдкрд░ рд╡рд┐рдВрдбреЛрдЬ
@iSazonov рдореИрдВ рдЗрд╕рд╕реЗ рд╡рд╛рдХрд┐рдл рдерд╛, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ред /ред
linuxред dll рдлрд╛рдЗрд▓реЗрдВ:
"PE32 рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп (DLL) (рдХрдВрд╕реЛрд▓) рдЗрдВрдЯреЗрд▓ 80386 рдореЛрдиреЛ / .рдиреЗрдЯ рдЕрд╕реЗрдВрдмрд▓реА, рдПрдордПрд╕ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП"
"PE32 + рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп (DLL) (рдХрдВрд╕реЛрд▓) рдореЛрдиреЛ / .рдиреЗрдЯ рдЕрд╕реЗрдВрдмрд▓реА, рдПрдордПрд╕ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП"
рд╡рд┐рдВрдбреЛрдЬрд╝ CRYPT32.dll рдлрд╝рд╛рдЗрд▓:
"MS32 рдХреЗ рд▓рд┐рдП PE32 рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп (DLL) (GUI) рдЗрдВрдЯреЗрд▓ 80386,"
рдЕрдм рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХреНрд╕рдкреЛрд░реНрдЯ-рдХреНрд▓рд┐рдХреНрд╕рд▓реИрдо рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ:
PS /> $cred=Get-Credential тАУcredential "myuser" | Export-Clixml SecureCredentials.xml
Windows PowerShell credential request
Enter your credentials.
Password for user myuser: **********
Export-Clixml : Unable to load DLL 'CRYPT32.dll': The specified module or one of its dependencies could not be found.
(Exception from HRESULT: 0x8007007E)
At line:1 char:45
+ ... Credential тАУcredential "myuser" | Export-Clixml SecureCredentials.xml
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Export-Clixml], DllNotFoundException
+ FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell.Commands.ExportClixmlCommand
@vchrizz рд╡рд░реНрддрдорд╛рди рдореЗрдВ .Net CLI рд╕рднреА рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЛ рдпреВрдирд┐рдХреНрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред # 3961 рдпреВрдирд┐рдХреНрд╕ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИред
@ daxian-dbw рдбреЗрдЯрд╛ рдХреА рд░рдХреНрд╖рд╛ / рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо OpenSSH рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд▓реНрдХрд┐ рд╣рдо рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреБрдЧреЗрдЯ рдЯреАрдо рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣реА рд╣реИред
@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА, рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдирдЧреЗрдЯ рдЯреАрдо рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдиреБрдЧреЗрдЯ / рд╣реЛрдо # 1851), рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд╣ рдерд╛ рдЬреЛ рдПрдХ рд▓рд╛рдкрддрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рд▓рд╛рдпрд╛ рдерд╛
@ SteveL-MSFT @psmulovics рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ CoreFX рдЯреАрдо рдмрдВрдж рдореБрджреНрджреЛрдВ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ - рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ https://github.com/dotnet/corefx/issues/22510
рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд░ рджрд┐рдпрд╛! ЁЯШД рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрддреНрддрд░ рд╣реИ:
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП OS рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
..
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ .NET Core рдореЗрдВ рдЬреЛ рд╣реИ рд╡рд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдпрд╣ рдбреАрдкреАрдПрдкреАрдЖрдИ рдЬреЛ рднреА рдХрд░рддрд╛ рд╣реИред рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдпрд╣ рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рдбреАрдкреАрдПрдкреАрдЖрдИ рдХрд░рддрд╛ рд╣реИ: рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:
System.Security.Cryptography.ProtectedData
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЕрдиреНрдп рдкреНрд▓рд╛рдирдлреЙрд░реНрдо рдкрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗрдВредрдЗрд╕ рдорд╛рдорд▓реЗ рдХреА рддрд▓рд╛рд╢ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
@iSazonov рд╡рд┐рдХрд▓реНрдк 2 рднреА System.Runtime.InteropServices.Marshal рдореЗрдВ рд▓рд╛рдПрдЧрд╛?
@iSazonov рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд░реНрдл рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдРрд╕рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдЫреЛрдЯрд╛ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ 6.1.0 рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВрдЧреЗ
@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рд╡рд┐рдВрдбреЛрдЬ рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЖрдЬ System.Security.Cryptography.ProtectedData рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред
@ngetchell CoreFX рдЗрд╢реНрдпреВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо CoreFX рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗред рдпреВрдирд┐рдХреНрд╕ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рд╡рд┐рдВрдбреЛрдЬрд╝ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдПрдХ рджреВрд░рд╕реНрде рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
@iSazonov рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдмреАрдЯрд╛.4 рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд▓рд┐рдП
@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рдиреЗ рдЕрд╢реБрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдорд╛рдлрд╝ рдХрд┐рдпрд╛, System.Security.Cryptography.ProtectedData рдХреЗ рддрд╣рдд I _ _CoreFX рдкреИрдХреЗрдЬ_ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рд╢реНрди рд╣реИ - рдХреНрдпрд╛ рд╣рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдХрд░ рдкреИрдХреЗрдЬ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рд╣рдореЗрдВ рдпреВрдирд┐рдХреНрд╕ рд╕реЗ * -SureureString cmdlets рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
@iSazonov рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреИрдХреЗрдЬ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреВрдирд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЪреАрдЬрд╝ рд╣реИред cc @joeyaiello
рдмрд╕ рдЗрд╕ рдХрд╣рд╛рдиреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА _remove_ ConvertTo / ConvertFrom SecureString cmdlets рдХреА рдпреЛрдЬрдирд╛ рд╣реИ?
рдЖрдпрд╛рдд / рдирд┐рд░реНрдпрд╛рдд CliXml рдореЗрдВ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдФрд░ рд╕рд┐рдХреНрдпреЛрд░рд╕реНрдЯреНрд░реАрдо рдХреА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдпреЗ рд╕рднреА рдЕрднреА рднреА HRFULT рд╕реЗ рдмрд╣реБрдд рд╣реА рдЕрдорд┐рддреНрд░ DllNotFoundException рдХреЛ рдлреЗрдВрдХ рд░рд╣реЗ рд╣реИрдВ ...
рдирд┐рд░реНрдпрд╛рдд-Clixml cmdlet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд▓рд┐рдирдХреНрд╕ рдкрд░ CRYPT32.dll рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред PS рд╕рдВрд╕реНрдХрд░рдг 6.0.0
рдореБрдЭреЗ рднреАред рдЪреВрдБрдХрд┐ рд╣рдо рдХреБрдЫ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдирдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдпрджрд┐ pwsh
рдпрд╛ CoreFX
рдУрд░ рд╕реЗ рдХреБрдЫ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ( рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ)ред
@ рд╢рд╛рдпрдж рд╣рдо Windows рд╕рдВрдЧрддрддрд╛ рдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
@iSazonov рдпрд╣ рдореЗрд░реА рд╕рдордЭ рд╣реИ рдХрд┐ SecureString рд╡рд┐рд╢рд┐рд╖реНрдЯ рдУрдПрд╕ рд╕рдорд░реНрдерди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рд╕рдВрдЧрддрддрд╛ рдкреИрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред
рднрд▓реЗ рд╣реА рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рд╣рдореЗрдВ рдПрдХ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рдпреВрдирд┐рдХреНрд╕ рдкрд░ * -рд╕реЗрдЪрд░рд░рд┐рдВрдЧ cmdlets рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдореИрдВ рдЗрд╕реЗ рдпрд╛рдж рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВ рдХрд┐ рдпрд╣ рдпреВрдирд┐рдХреНрд╕ рдкрд░ рдХреНрдпреЛрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдпреВрдирд┐рдХреНрд╕ рдкрд░ рд▓рд╛рдкрддрд╛ "рдУрдПрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ" рднрд╛рдЧ рдХреНрдпрд╛ рд╣реИ?
рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд╛рдиреЗ рдФрд░ рдЖрдЧреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдФрд░ рдХреИрд╕реЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ CoreFX рдкрд░ рдпрд╣ рдореБрджреНрджрд╛ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ: https://github.com/dotnet/corefx/issues/22510
рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗред
рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рддрд╛ рд╣реИред
@ рд╕реНрдЯреАрд╡рдПрд▓-рдПрдордПрд╕рдПрдлрдЯреА рдбрдмреНрд▓реНрдпреВрд╕реАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { ... }
рдпрджрд┐ WCP рдореЗрдВ рдХреБрдЫ API рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рддреЛ рд╣рдо WCP рд░реЗрдкреЛ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рднреА рд╣рдо #if !UNIX
рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП @iSazonov рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ WCP рдЗрд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рдХреНрдпреЛрд░рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдПрдХ рдЦрд╛рд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред
рдореБрдЭреЗ рд╡реИрд╕реЗ рднреА рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред ЁЯШД
рдареАрдХ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕реАрдзреЗ рдорд┐рд▓ рдЧрдпрд╛ рд╣реВрдБ ...
18 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рдЗрд╕ рдХреА рд╢реБрд░реБрдЖрддреА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд╛рд╡рдЬреВрдж
6 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ .Net рдлреНрд░реЗрдорд╡рд░реНрдХ рдЯреАрдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ_ рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рд╡рдЬреВрджред
ЁЯЩД
рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ (рдФрд░ рдкреЙрд╡рд░рд╢реЗрд▓) рдХреЛ рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбреЗрдЯрд╛ рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреЗрд╡ / рдСрдкреНрд╕ рдХреЛ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрдм рд╣рдо рдорд┐рд╢реНрд░рдг рдореЗрдВ рдирдП рдУрдПрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдЕрдЪрд╛рдирдХ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрддреЗ рдереЗ, рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ Azure KeyVault, RED Identity management, рдпрд╛ Thycotic Secret Server рдЬреИрд╕реА рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред ЁЯШХ
.NET рдЯреАрдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╣рд╛рдпрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ ASP.NET рдиреЗ рдЕрдкрдирд╛ DataProtection рд╕рд╛рдорд╛рди рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдЕрдЬреАрдм рд╣реИ рдФрд░ рд╡реЗ рдЗрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ ...
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП:
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЙрди cmdlets рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ CliXML рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, "рдУрд╣ рдбрд╛рд░рди, рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдХреНрд░рд┐рдкреНрдЯреЛ рдбреАрдПрд▓рдПрд▓ рдЙрдкрд▓рдмреНрдз рдерд╛" рддреНрд░реБрдЯрд┐ред
рд╕рдВрдмрдВрдзрд┐рдд рдЖрдЗрдЯрдо рджреЗрдЦреЗрдВ:
NuGet / рд╣реЛрдо # 1851
рдбреЙрдЯрдиреИрдЯ / corefx # 6746
рд╣рдо ASP.NET DataProtection рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИ рдЬреЛ рдЖрдЬ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЦрд╛рд╕рддреМрд░ рдкрд░ рддрдм рдЬрдмрдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреА рдХрд╛рдлреА рдЬрд░реВрд░рдд рд╣реИред
рдореИрдВ рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдПрдХ MySQL рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд┐ рдореИрдВ рдХрдВрд╕реЛрд▓ рдХреЛ рдкрд╛рд╕рд╡рд░реНрдб рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реВрдВ?
$str = Read-Host -AsSecureString
ConvertFrom-SecureString -SecureString $str
ConvertFrom-SecureString : Unable to load DLL 'CRYPT32.dll': The specified module or one of its dependencies could not be found.
(Exception from HRESULT: 0x8007007E)
At line:1 char:1
+ ConvertFrom-SecureString -SecureString $str
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-SecureString], DllNotFoundException
+ FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell.Commands.ConvertFromSecureStringCommand
@ pcgeek86 рдпрд╣ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рд╕рд╛рджрд╛ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ linux рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
$str = Read-Host -AsSecureString
$plaintext = [System.Net.NetworkCredential]::new('',$str).Password
рдореИрдВрдиреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдПрдХ рдФрд░ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдЬреЛрдбрд╝рд╛
рд▓рд┐рдирдХреНрд╕ рдкрд░ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдХрд╛рдлреА рдЧрдбрд╝рдмрдбрд╝ рд▓рдЧрддрд╛ рд╣реИред рдХрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреНрд░рдпрд╛рд╕ рдФрд░ рдкреБрд░рд╛рдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Gnome рдЧреБрдкреНрдд рд╕реЗрд╡рд╛ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдХрд░ рд░рд╣рд╛ libsecret рдХреЛ рд╕реАрдХреНрд░реЗрдЯ рд╕рд░реНрд╡рд┐рд╕ рдмрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рд╣рд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рдЧрддрд╛ рд╣реИред
Mac OS X Keychain рдХреЗ рд╕рд╛рде security
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ Keychain рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
QtKeychain рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реНрд╡рддрдВрддреНрд░ рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рд╕реАрдХреНрд░реЗрдЯ рдореИрдиреЗрдЬрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ (libsecret рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), Mac OS X (рдХреБрдВрдЬреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдФрд░ Windows (Windows рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рд╕реНрдЯреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдФрд░ рд╕рдВрднрд╡рддрдГ PowerShell рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рд╣реИред рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдПрдХ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЬрдм рддрдХ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рддрдм рддрдХ рдпрд╣рд╛рдВ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЬреЙрдм рдХреЗ рд▓рд┐рдП рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ:
$credentialKey = New-Object 'byte[]' (256/8)
$rng = New-Object 'Security.Cryptography.RNGCryptoServiceProvider'
$rng.GetBytes($credentialKey)
$serializableCredential = [pscustomobject]@{
UserName = $credential.UserName;
Password = ConvertFrom-SecureString -SecureString $credential.Password -Key $credentialKey
}
$job = Start-Job {
param(
[Parameter(Mandatory)]
[byte[]]
$Key
)
$serializedCredential = $using:serializableCredential
$password = ConvertTo-SecureString -String $serializedCredential.Password -Key $Key
$credential = New-Object 'PSCredential' ($serializedCredential.UserName,$password)
[Array]::Clear($Key,0,$Key.Length)
} -ArgumentList (,$credentialKey) | Wait-Job | Receive-Job
[Array]::Clear($credentialKey,0,$credentialKey.Length)
рдкрд╛рд╕рд╡рд░реНрдб = ConvertFrom-SecureString -SecureString $ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓редрдкрд╛рд╕рд╡рд░реНрдб -рдХреЗ $ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓рдХреЗ
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ?
рд╡реИрд╕реЗ рднреА, рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА:
ConvertFrom-SecureString : Cannot bind argument to parameter 'SecureString' because it is null.
At /home/myusername/powershell.ps1:7 char:99
+ ... = ConvertFrom-SecureString -SecureString $credential.Password -Key $c ...
+ ~~~~~~~~~~~~~~~~~~~~
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдЪрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди:
ConvertFrom-SecureString : Cannot bind parameter 'SecureString'. Cannot convert the "testpassword" value of type "System.String" to type "System.Security.SecureString".
рдорд╛рдирд╕ рдкрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рд╕рднреА рдЦреЛрд▓реЗ рдЧрдП рдореБрджреНрджреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЕрд▓рдЧ рд╣реИред
рд▓рд┐рдирдХреНрд╕ рдкрд░ CryptoAPI рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг PSRemote рдореБрдЦреНрдп рд╡рд┐рдирд┐рдордп рдХреЗ рджреМрд░рд╛рди рд▓рдЯрдХрд╛ рд░рд╣рддрд╛ рд╣реИред
рдЬреЛ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ рд╡рд╣ рдпрд╣рд╛рдВ рд▓рдЯрдХрддрд╛ рд╣реИ https://github.com/PowerShell/PowerShell/blob/5ece96a37fc9bb5cb9cb962b32741b00396ae0f135/Src.anagement.Automation/utils/CryptoUtils.cs#L111717
Btw, рд╣рдо рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ securestring рдЕрднреА рддрдХ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ ^ рдпрд╣ securestrings рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реИ рдЕрдЧрд░ рдпрд╣ рдЙрд╕реА рддрд░рд╣ рд▓рдЯрдХрд╛ рд░рд╣рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ConvertFrom-SecureString
рдХрдорд╛рдВрдбрд▓реЗрдЯ рдХреЛ рдареАрдХ рдХрд┐рдП рдмрд┐рдирд╛ psremoting рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдорд╢реАрди рдкрд░ рдЪрд╛рдмрд┐рдпрд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рдХреЗрд╡рд▓ rsa 2048 рдХреАрд╕ рдЬреЛрдбрд╝реА, рдХреНрд░рд┐рдкреНрдЯ / рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ rsa, рдХреНрд░рд┐рдкреНрдЯ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ AES CBC рдХреНрд░реЙрд╕рд▓рдлреНрд░реЗрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреБрдЫ рдЕрдЪреНрдЫреА рдЦрдмрд░реЗрдВ рдХреНрд░реЙрд╕рдкреНрд▓реЗрдЯ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИред
PSRemoting рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди
рдкреАрдПрд╕рдЖрд░рдкреА pypsrp рдХреЗ рдЕрдЬрдЧрд░ рддрд╛рдЬрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╣ securestrings рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ!
@KKomarov рдХреГрдкрдпрд╛ рд░реЗрдкреЛ рдЪрд░рдгреЛрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рд╛рде рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред
@KKomarov рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА https://github.com/PowerShell/PowerShell/issues/8723 рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ PSCore6.2-RC рдореЗрдВ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд╛рд░ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
DE0001: SecureString рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
https://github.com/dotnet/platform-compat/blob/master/docs/DE0001.md#de0001 -securestring-shouldnt-be-used
@iSazonov
DE0001: SecureString рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
https://github.com/dotnet/platform-compat/blob/master/docs/DE0001.md#de0001 -securestring-shouldnt-be-used
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдЖрджрд░реНрд╢ рд╣рд╛рдереА рджрд╛рдВрдд рдЯреЙрд╡рд░ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдкреЙрд╡рд░реНрд╕рд╢реЗрд▓ рдореЗрдВ рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕ рднреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрд╡реЗрджрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдПрдкреАрдЖрдИ, рд╡рд┐рд░рд╛рд╕рдд рдЖрд╡реЗрджрди рдЬреЛ рдХреЗрд╡рд▓ рдореВрд▓ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред "рд╡рд┐рдВрдбреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдпрд╛ рдкреНрд░рдорд╛рдг рдкрддреНрд░" рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдПрдХ рдирдпрд╛ рдРрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рд╢рдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ PSCredential рдХрд╣реАрдВ рднреА рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ SecureString рдХрд╛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ .net рдХреЛрд░ рдореЗрдВ рдХреБрдЫ рд╣реИ рдЬреЛ рдХрд┐ рдЪрд╛рдмрд┐рдпреЛрдВ рдпрд╛ рдХреБрдЫ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TPM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рдореЗрдВ "рдЕрдЪреНрдЫреЗ рдкрд░реНрдпрд╛рдкреНрдд" рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
AES256 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рд╣реЛрдиреЗ рдХреА рддрд░рд╣ рдХреБрдЫ рдиреЙрди-рд╡рд┐рдВрдбреЛрдЬ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ 600 рдЕрдиреБрдорддрд┐-рдПрдб рдлрд╝рд╛рдЗрд▓ рд╣реЛрдирд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╢реБрд░реБрдЖрдд рд╣реИ, рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ рдХреНрд░рд┐рдкреНрдЯреЛ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред
рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рд╛ред
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ:
рд╢реБрд░реВ рдореЗрдВ, @ PowerShell / powershell-рд╕рдорд┐рддрд┐ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдПрдХ SensitiveString
рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреА рдЬрд░реВрд░рдд рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП SecureString
рд╣рд╛рд▓рд╛рдВрдХрд┐ рджреЛрдиреЛрдВ рд╕реБрд░рдХреНрд╖рд┐рдд (рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ SecureString
рдкреНрд░рдХрд╛рд░ рдЕрднреА рднреА рдЬрд░реВрд░рдд рд╣реЛрдЧреА рдкреАрдЫреЗ рдХреЗ рд▓рд┐рдП)ред рдПрдХ рдкреНрд░рдХрд╛рд░ (рдЪрд╛рд╣реЗ "рд╕рдВрд╡реЗрджрдирд╢реАрд▓" рдпрд╛ "рд╕рд┐рдХреНрдпреЛрд░" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдкреЙрд╡рд░рд╢реЗрд▓ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдХреЛ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╢реАрдШреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓ рд░реАрдореЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдмрдЧ рдХреЗ рдореВрд▓ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЖрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ) рдЕрдм рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ), рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ SecureString рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рд╣реИред
рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИ!
рдХреНрдпрд╛ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рдордп-рд╕реАрдорд╛ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ microsoft-debian-stretch-prod debian repository)?
рдЗрд╕ рдмрдЧ рдХреЗ рдореВрд▓ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЖрдкрдХреЛ рдЕрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ), рдмрд╕ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ SecureString рдЖрдВрддрд░рд┐рдХ рдкрд╛рда рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдлрд┐рдХреНрд╕ рдХрд╛ рд▓рд┐рдВрдХ рд╣реИ рдпрд╛ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛? рдореБрдЭреЗ рдЕрднреА рднреА рд╢рдХреНрддрд┐рдпрд╛рдВ_6.1.3-1.ubuntu.16.04_amd64.deb (6.2.0-rc.1 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕реМрджрд╛) рдореЗрдВ crypt32.dll рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВред
рдореБрдЭреЗ рдпрд╣ рднреА рдЙрддреНрд╕реБрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд┐рдХреНрд╕ рдЖрдпрд╛рдд / рдирд┐рд░реНрдпрд╛рдд- CliXml рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреНрд░рдордмрджреНрдз рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдореЗрдВ SecureString рдпрд╛ PSCFential рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред
@rmbolger рдХреНрдпрд╛ рдЖрдк рдирд╡реАрдирддрдо рдмрд┐рд▓реНрдб (6.2.0-RC) рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдореИрдВ @rmbolger рдЬреИрд╕рд╛ рд╣реА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ
/home/hillr
03-20 23:44:55 31ms 11> $PSVersionTable
Name Value
---- -----
PSVersion 6.2.0-rc.1
PSEdition Core
GitCommitId 6.2.0-rc.1
OS Linux 4.4.0-17763-Microsoft #379-Microsoft Wed Mar 06 19:16:00 PST 2019
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0тАж}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
/home/hillr
03-21 00:47:45 35ms 12> ConvertFrom-SecureString -SecureString $ss
ConvertFrom-SecureString : Unable to load shared library 'CRYPT32.dll' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libCRYPT32.dll: cannot open shared object file: No such file or directory
At line:1 char:1
+ ConvertFrom-SecureString -SecureString $ss
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-SecureString], DllNotFoundException
+ FullyQualifiedErrorId : System.DllNotFoundException,Microsoft.PowerShell.Commands.ConvertFromSecureStringCommand
Cmdlets рд╕реАрдзреЗ CRYPT32.dll рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
https://github.com/PowerShell/PowerShell/blob/8763c0b1d11ce3ee8639e9386383f158976490e0/src/Microsoft.PowerShell.Security/security/SecureStringCommands.cs#L169
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ (рдФрд░ рдкреЙрд╡рд░рд╢реЗрд▓) рдХреЛ рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдбреЗрдЯрд╛ рдкреНрд░реЛрдЯреЗрдХреНрд╢рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреЗрд╡ / рдСрдкреНрд╕ рдХреЛ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрдм рд╣рдо рдорд┐рд╢реНрд░рдг рдореЗрдВ рдирдП рдУрдПрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдЕрдЪрд╛рдирдХ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрддреЗ рдереЗ, рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ Azure KeyVault, RED Identity management, рдпрд╛ Thycotic Secret Server рдЬреИрд╕реА рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред ЁЯШХ
.NET рдЯреАрдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдБ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╣рд╛рдпрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ ASP.NET рдиреЗ рдЕрдкрдирд╛ DataProtection рд╕рд╛рдорд╛рди рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдЕрдЬреАрдм рд╣реИ рдФрд░ рд╡реЗ рдЗрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ ...
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП:
рдХреНрдпрд╛ PowerShell рдЯреАрдо SecureString рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реА рд╣реИ?
рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЙрди cmdlets рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ CliXML рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, "рдУрд╣ рдбрд╛рд░рди, рдпрджрд┐ рдХреЗрд╡рд▓ рдПрдХ рдХреНрд░рд┐рдкреНрдЯреЛ рдбреАрдПрд▓рдПрд▓ рдЙрдкрд▓рдмреНрдз рдерд╛" рддреНрд░реБрдЯрд┐ред