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

问题描述:

我试图使用SHA1 64位编码密码来访问Web服务,但我不确定如何在PowerShell中对其进行编码。如何使用PowerShell v2加密和编码密码?

我试着使用: PS C:\ Program Files文件(x86)的\的PowerGUI> $密码= “这里没有显示密码”

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

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

但我得到这个回:

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

我对于PowerShell新功能,所以这可能不是正确的代码使用。我试图修改我在网上找到的一个例子。

任何想法如何使用SHA1加密和base64编码在PowerShell中做到这一点?


好了,这个工程的编码,感谢乔纳森这部分:

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

# and the result: 
Write-Host $encodedStr 
cAB3AGQA 

我注意到函数调用::是空白敏感。这适用于加密部分。

$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 

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/