在 Powershell 中使用机器密钥加密字符串?
Encrypt String with the Machine Key in Powershell?
我想在 Powershell 中加密密码以将其保存到文件中。 ConvertTo-SecureString
使用当前凭据加密和解密字符串。
我想用本地机器密钥(可能是 SYSTEM 帐户凭据)对其进行加密,以便同一台计算机上的每个用户名都可以使用该密码。
我希望该字符串在其他计算机上无法解密。
可以将 [Security.Cryptography.ProtectedData]::Protect
函数与 [Security.Cryptography.DataProtectionScope]::LocalMachine
一起用作实体。
代码示例:
Function Encrypt-WithMachineKey($s) {
Add-Type -AssemblyName System.Security
$bytes = [System.Text.Encoding]::Unicode.GetBytes($s)
$SecureStr = [Security.Cryptography.ProtectedData]::Protect($bytes, $null, [Security.Cryptography.DataProtectionScope]::LocalMachine)
$SecureStrBase64 = [System.Convert]::ToBase64String($SecureStr)
return $SecureStrBase64
}
Function Decrypt-WithMachineKey($s) {
Add-Type -AssemblyName System.Security
$SecureStr = [System.Convert]::FromBase64String($s)
$bytes = [Security.Cryptography.ProtectedData]::Unprotect($SecureStr, $null, [Security.Cryptography.DataProtectionScope]::LocalMachine)
$Password = [System.Text.Encoding]::Unicode.GetString($bytes)
return $Password
}
我想在 Powershell 中加密密码以将其保存到文件中。 ConvertTo-SecureString
使用当前凭据加密和解密字符串。
我想用本地机器密钥(可能是 SYSTEM 帐户凭据)对其进行加密,以便同一台计算机上的每个用户名都可以使用该密码。
我希望该字符串在其他计算机上无法解密。
可以将 [Security.Cryptography.ProtectedData]::Protect
函数与 [Security.Cryptography.DataProtectionScope]::LocalMachine
一起用作实体。
代码示例:
Function Encrypt-WithMachineKey($s) {
Add-Type -AssemblyName System.Security
$bytes = [System.Text.Encoding]::Unicode.GetBytes($s)
$SecureStr = [Security.Cryptography.ProtectedData]::Protect($bytes, $null, [Security.Cryptography.DataProtectionScope]::LocalMachine)
$SecureStrBase64 = [System.Convert]::ToBase64String($SecureStr)
return $SecureStrBase64
}
Function Decrypt-WithMachineKey($s) {
Add-Type -AssemblyName System.Security
$SecureStr = [System.Convert]::FromBase64String($s)
$bytes = [Security.Cryptography.ProtectedData]::Unprotect($SecureStr, $null, [Security.Cryptography.DataProtectionScope]::LocalMachine)
$Password = [System.Text.Encoding]::Unicode.GetString($bytes)
return $Password
}