能帮我将下面的C#转换为PowerShell
byte[] plainTextWithSaltBytes = new byte[plainTextBytes.Length + saltBytes.Length];
下面是我要在此处执行的完整代码。 我正在尝试在此处生成哈希码
Function CalculateHashWithSalt($input = "Password@123", $salt="qLTf99m__JGu", $algorithmName = "SHA512")
{
$pass = [System.Text.Encoding]::UTF8
$input = "Password123"
$data1 = $pass.GetBytes($input)
$saltbytes = [System.Text.Encoding]::UTF8
$saltbytes=$saltbytes.GetBytes($salt)
$plainTextWithSaltBytes=@()
$plainTextWithSaltBytes = $data1.Length + $saltbytes.Length
for ($i = 0; $i -lt $data1.Length; $i++)
{
$plainTextWithSaltBytes[$i] = $data1[$i]
}
for ($i = 0; $i -lt $saltbytes.Length; $i++)
{
$plainTextWithSaltBytes[$pass.Length + $i] = $saltbytes[$i];
}
[System.Byte[]]::new($hashBytes)
$hashBytes = $algorithmName.ComputeHash($plainTextWithSaltBytes);
$Encrypted = [System.Convert]::FromBase64String($hashBytes)
}
尝试转换以下c#代码: C# code link
答案 0 :(得分:0)
来自https://blogs.msdn.microsoft.com/luc/2011/01/21/powershell-getting-the-hash-value-for-a-string/
我的个人脚本中具有此功能,并带有要使用的算法参数。
function Hash($textToHash)
{
$hasher = new-object System.Security.Cryptography.SHA256Managed
$toHash = [System.Text.Encoding]::UTF8.GetBytes($textToHash)
$hashByteArray = $hasher.ComputeHash($toHash)
foreach($byte in $hashByteArray)
{
$res += $byte.ToString()
}
return $res;
}