了解 Powershell SecureStrings
Understanding Powershell SecureStrings
今天想深入了解SecureString .NET和Powershell的概念,没想到,我理解的很好。
如果我有密码并将其转换为安全字符串。它是在我输入时保存的吗? (加密或纯文本)。
现在,如果我将密码作为 PSCredential 的一部分传递给 PSSession:会发生什么情况? PSSession 运行 ConvertFrom-SecureString 是否在传递的密码上?但是随后密码又被加密了。它如何知道如何将其传递给 PSSesion?
我不完全理解你的问题,但明白了。如果您根据 对象类型 (some explanation) 考虑,这可能会更容易。 [这个 link 现在已经死了。]
"If I have a password and convert it to a securestring. Is it saved as
I entered it? (Being both encrypted or plain text)"
- 您的密码将为纯文本,类型为
[String]
。这未加密。
- SecureString 的类型为
[System.Security.SecureString]
。它是加密的。
- 此加密发生 in memory whenever you create the
SecureString
。
- 请务必注意,需要密钥才能解密
SecureString
(更多内容见下文)
方法一
这会创建一个名为 $SecurePassword
的 encrypted SecureString
变量。未加密的密码没有保存在内存中。
$SecurePassword = Read-Host -Prompt "Enter password" -AsSecureString
方法二
这将创建一个 未加密的 String
变量 $PlainPassword
, 然后 一个 SecureString
变量。
$PlainPassword = Read-Host -Prompt "Enter password"
$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
"Now if I would pass the password as a part of a PSCredential to a PSSession: what would happen?"
- PSSession 不接受未加密的密码。为了简化,您可以提供
User
并提示输入密码,或者传递类型为 PSCredential
的对象 - 即它需要 安全密码 .
- 当您传递
PSCredential
时,它已经使用 SecureString
的密码进行了加密。
- 但是 PSSession 需要对其进行解密(这部分我不确定但假设...它还能如何修改它?)
- 要解密
SecureString
,需要密钥。密钥是正常生成的,只要两台机器的密钥相同security principle,PSSession就可以完成解密(这部分我确定)
- This post解决了在不同原理的情况下,如何创建密钥才能解密
SecureString
。
今天想深入了解SecureString .NET和Powershell的概念,没想到,我理解的很好。
如果我有密码并将其转换为安全字符串。它是在我输入时保存的吗? (加密或纯文本)。
现在,如果我将密码作为 PSCredential 的一部分传递给 PSSession:会发生什么情况? PSSession 运行 ConvertFrom-SecureString 是否在传递的密码上?但是随后密码又被加密了。它如何知道如何将其传递给 PSSesion?
我不完全理解你的问题,但明白了。如果您根据 对象类型 (some explanation) 考虑,这可能会更容易。 [这个 link 现在已经死了。]
"If I have a password and convert it to a securestring. Is it saved as I entered it? (Being both encrypted or plain text)"
- 您的密码将为纯文本,类型为
[String]
。这未加密。 - SecureString 的类型为
[System.Security.SecureString]
。它是加密的。 - 此加密发生 in memory whenever you create the
SecureString
。 - 请务必注意,需要密钥才能解密
SecureString
(更多内容见下文)
方法一
这会创建一个名为 $SecurePassword
的 encrypted SecureString
变量。未加密的密码没有保存在内存中。
$SecurePassword = Read-Host -Prompt "Enter password" -AsSecureString
方法二
这将创建一个 未加密的 String
变量 $PlainPassword
, 然后 一个 SecureString
变量。
$PlainPassword = Read-Host -Prompt "Enter password"
$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
"Now if I would pass the password as a part of a PSCredential to a PSSession: what would happen?"
- PSSession 不接受未加密的密码。为了简化,您可以提供
User
并提示输入密码,或者传递类型为PSCredential
的对象 - 即它需要 安全密码 . - 当您传递
PSCredential
时,它已经使用SecureString
的密码进行了加密。 - 但是 PSSession 需要对其进行解密(这部分我不确定但假设...它还能如何修改它?)
- 要解密
SecureString
,需要密钥。密钥是正常生成的,只要两台机器的密钥相同security principle,PSSession就可以完成解密(这部分我确定) - This post解决了在不同原理的情况下,如何创建密钥才能解密
SecureString
。