# Code Snippet from aperturescience.su Function Get-BCryptHash { <# .SYNOPSIS Gets a hash the string provided using either salt or workfactor provided. .DESCRIPTION The cmdlet will return a hash of the string provided to it, you can optionally specify a salt to be used, otherwise a salt will be generated on the fly. A workfactor can be specified for the salt generated on the fly. You cannot specify a salt and a workfactor, only one can be specified at any one time. If both are specified an error will be throw. .PARAMETER InputString [Pipeline] String to be hashed .PARAMETER WorkFactor [Optional] Workfactor for salt if generating one on the fly .PARAMETER Salt [Optional] Salt to be used during the hashing process .INPUTS Accepts strings to be hashed on pipeline (InputString) .OUTPUTS Hashes of input string .EXAMPLE Get-BCryptStringHash "MyPassword" Returns the bcrypt has of the input string "MyPassword" with a random salt, this will produce a different has every time you run this! .EXAMPLE @("Password1", "Password2", "Password3") | Get-BCryptStringHash -Salt $MyBCryptSalt .NOTES NAME: Get-BCryptStringHash LASTEDIT: 2012-11-17 11:15:00 KEYWORDS: bcrypt, hash, password .LINK http://bcrypt.codeplex.com/ .LINK http://aperturescience.su/ #> [CMDLetBinding()] param ( [Parameter(mandatory=$true, valuefrompipeline=$true)] [String] $InputString, [Int] $WorkFactor, [String] $Salt ) Begin { #Test if the user specified both workfactor and salt, if they did throw an error if ($WorkFactor -and $Salt) { throw "You cannot specify both a WorkFactor and a Salt, please specify one or the other" } } Process { #if workfactor was specified, then we call that function, otherwise if the salt was spcified, # then use that function, otherwise just the plain inputstring function if ($WorkFactor) { return [bcrypt.net.bcrypt]::hashpassword($InputString, $WorkFactor) } elseif ($Salt) { return [bcrypt.net.bcrypt]::hashpassword($InputString, $Salt) } else { return [bcrypt.net.bcrypt]::hashpassword($InputString) } } } # Code Snippet from aperturescience.su