kjacobsen icon

get-BCryptHash

kjacobsen | PRO | 01/27/13 11:46:46 AM UTC | 0 ⭐ | 4973 👁️ | Never ⏰ | []
PowerShell |

2.13 KB

|

None

|

0 👍

/

0 👎

# 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

Comments