如何加密&使用PowerShell v2编码密码?

时间:2011-11-04 18:27:47

标签: powershell encoding base64 sha1

我正在尝试使用SHA1 64位编码密码来访问Web服务,但我不确定如何在PowerShell中对此进行编码。

我尝试过使用:     PS C:\ Program Files(x86)\ PowerGUI> $ password =“此处未显示密码”

PS C:\Program Files (x86)\PowerGUI> $bytes =  System.Text.Encoding]::Unicode.GetBytes($password)

PS C:\Program Files (x86)\PowerGUI> $encodedString = [Convert]::ToBase64CharArray($bytes)

但我得到了回复:

找不到“ToBase64CharArray”的重载和参数count:“1”。 在行:1字符:46 + $ encodedString = [Convert] :: ToBase64CharArray<<<< ($字节)     + CategoryInfo:NotSpecified:(:) [],MethodException     + FullyQualifiedErrorId:MethodCountCouldNotFindBest

我是PowerShell的新手,所以这甚至可能都不是正确的代码。我试图修改我在网上找到的一个例子。

有关如何在PowerShell中使用SHA1加密和base64编码执行此操作的任何想法?


好的,这适用于编码,感谢Jonathan的这一部分:

$str = "pwd"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($str)
$encodedStr = [Convert]::ToBase64String($bytes)

# and the result:
Write-Host $encodedStr
cAB3AGQA

我注意到函数call ::对空格很敏感。这适用于加密部分。

$Sha1provider = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider
$hashBytes = $Sha1provider.ComputeHash($bytes)
Write-Host $hashBytes
114 168 243 129 97 21 246 249 22 4 38 215 241 185 174 86 116 201 7 7

1 个答案:

答案 0 :(得分:1)

Convert.ToBase64CharArray方法只有一个参数没有重载。

http://msdn.microsoft.com/en-us/library/3d0e5t57.aspx

您可能想要这样做:

$encodedString = [Convert]::ToBase64String($bytes);
write-host $encodedString

请注意,base64编码不是SHA1编码。看这里:http://blog.logiclabz.com/c/function-to-encrypt-string-in-c-net-using-sha1-algorithm.aspx

此外,您不一定要将C#代码转换为Powershell。

您可以使用Add-Type在脚本中包含C#代码。

PS:我想你知道编码不是加密吗? http://www.blesta.com/2009/07/26/encoding-vs-encryption/