param(
[parameter(Mandatory = $true, HelpMessage = "Action type: e.g. Encrypt(E)/Decrypt(D)")] [string] $Action,
[parameter(Mandatory = $true, HelpMessage = "Pass Key should be the same as used to encrypt if decrypting")] [string] $passKey,
[parameter(Mandatory = $true, HelpMessage = "String to be encrypted or decrypted")] [string] $message
)
[System.Reflection.Assembly]::LoadWithPartialName('System.Security.Cryptography')
[System.Reflection.Assembly]::LoadWithPartialName('System.Collections.Generic')
[System.Reflection.Assembly]::LoadWithPartialName('System.Text')
$HashProvider = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider
$TDESAlgorithm = New-Object System.Security.Cryptography.TripleDESCryptoServiceProvider
[Byte[]] $TDESKey = $HashProvider.ComputeHash([System.Text.UTF8Encoding]::UTF8.GetBytes($passKey));
$keyByte = New-Object byte[] 24
$TDESKey.CopyTo($keyByte, 0);
$TDESAlgorithm.Key = $keyByte
$TDESAlgorithm.Mode = [System.Security.Cryptography.CipherMode]::ECB
$TDESAlgorithm.Padding = [System.Security.Cryptography.PaddingMode]::PKCS7
switch -regex ($Action.toLower()){
"d(ecrypt)?"{
try{
[Byte[]] $DataToDecrypt = [convert]::FromBase64String($Message)
$Decryptor = $TDESAlgorithm.CreateDecryptor()
$Results = $Decryptor.TransformFinalBlock($DataToDecrypt, 0, $DataToDecrypt.Length)
}finally{
$TDESAlgorithm.Clear()
$HashProvider.Clear()
}
return [System.Text.UTF8Encoding]::UTF8.GetString($Results)
}
"e(ncrypt)?"{
[Byte[]] $DataToEncrypt = [System.Text.UTF8Encoding]::UTF8.GetBytes($Message)
try{
$Encryptor = $TDESAlgorithm.CreateEncryptor();
$Results = $Encryptor.TransformFinalBlock($DataToEncrypt, 0, $DataToEncrypt.Length);
}finally{
$TDESAlgorithm.Clear();
$HashProvider.Clear();
}
return [Convert]::ToBase64String($Results)
}
}
<#
.SYNOPSIS
Encrypt or Decrypt strings with a pass key
.DESCRIPTION
Uses SHA1 Crypto provider to create a Hash of a pass key to tripledes encrypt/decrypt a string
EDIT HISTORY:
08/10/2012 v1.0 Initial Release
.PARAMETER Action
Choose to Encrypt (E) or Decrypt (D)
.PARAMETER passKey
Pass key to be used to encrypt or decrypt a string
.PARAMETER message
String to be encrypted or decrypted
.INPUTS
None.
.OUTPUTS
Returns string
.EXAMPLE
PS > .\SHA1Crypt.ps1 -Action e -message testmessage -passKey thisismykey1
.EXAMPLE
PS > .\SHA1Crypt.ps1 -Action Decrypt -message "IZTkBEuz6JbWvBlNQaN2wA==" -passKey thisismykey1
#>
Monday, 8 October 2012
Use SHA1 Crypto provider to create a Hash of a pass key to tripledes encrypt/decrypt a string:
Subscribe to:
Post Comments (Atom)
Nice!!!
ReplyDelete