Blowfish plug-in

From NSIS Wiki
Jump to navigationJump to search

Links

Download link:

Blowfish.zip (14 KB)

NSIS Forum thread

Description

Version: 1.0.

Can encrypt a value using the Blowfish algorithm from a string w/ password. The password can be used later to unlock the original string in the decryption process. No source code is included.

DLL Functions

blowfish::encrypt

Encrypts data using the Blowfish algorithm.

Syntax

blowfish::encrypt "String" "Password"

Parameters

String
String to be encrypted.
Password
Password to be used in decryption to get the "String" value back.

Return Value

Encrypted value to the variable "$8".

Example

blowfish::encrypt "secret" "password"
MessageBox MB_OK "Encrypted string is $8"

blowfish::decrypt

Decrypts data using the Blowfish algorithm.

Syntax

blowfish::decrypt "EncryptedString" "Password"

Parameters

EncryptedString
String to be decrypted.
Password
Password to restore the original "String" value from the encryption process.

Return Value

Decrypted value to the variable "$8".

Example

blowfish::decrypt $8 "password"
MessageBox MB_OK "Decrypted string is $8"

Helper Macro (optional)

## BlowFish Plugin Macro
## ---------------------
## Syntax:
##  ${BlowFish_Encrypt} {returnVariable | ""} <StringToEncrypt> <EncryptionKey> 
##  ${BlowFish_Decrypt} {returnVariable | ""} <StringToDecrypt> <DecryptionKey> 
 
    !ifmacrondef _BlowFish
        !define BlowFish_Decrypt `!insertmacro _BlowFish Decrypt`
        !define BlowFish_Encrypt `!insertmacro _BlowFish Encrypt`
        !macro _BlowFish _cmd _retVar _Data _Key
            !if `${_retVar}` != `$8`
                Push $8
            !endif      
            BlowFish::${_cmd} `${_Data}` `${_Key}`
            !if `${_retVar}` != `$8`
                Exch $8
                !if `${_retVar}` != ``
                    Pop ${_retVar}
                !endif
            !endif
        !macroend
    !endif
 
    ## Example using the $0 register
        ${BlowFish_Encrypt} $0 "Top Secret" "password"
        DetailPrint "Encrypted: $0"
 
        ${BlowFish_Decrypt} $0 $0 "password"
        DetailPrint "Decrypted: $0"
 
    ## Example using the stack, notice
        ${BlowFish_Encrypt} "" $0 "password"
        Pop $1
        DetailPrint "$0 => $1"
 
        ${BlowFish_Decrypt} "" $1 "password"
        Pop $2
        DetailPrint "$1 => $2"

Versions History

1.0 - 19/Jan/2005
  • First version.

Credits

Plug-in created by yehiaeg.
Macro created by Zinthose.