Crypto plug-in: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
mNo edit summary
m (SHA2 result)
 
(27 intermediate revisions by 7 users not shown)
Line 1: Line 1:
[[Category:Plugins]]
{{PageAuthor|GAG}}
{{PageAuthor|GAG}}
{{PageAuthor|Anders}}


== Links ==
== Plug-in Info ==
[[File:Zip.gif]] [http://forums.winamp.com/attachment.php?postid=1346355 cryptoplg11.zip] (43 KB) (plugin dll + readme + examples)
* '''Version:''' 1.4
* '''Type:''' Runtime plug-in (Ansi & Unicode)
* '''Minimum OS:''' Win95.OSR2 (IE3+), WinNT4 (IE3+)
* '''Minimum NSIS version:''' 2.45
* '''License:''' Freeware
* '''Download:''' <attach>Crypto.zip</attach>
 
 
<div style="background-color:#FFB3B3;border:1px solid #FF1111;color:#A20000;padding:0.4em"><b>Version 1.2 and earlier fails on Windows Server with the NTE_BAD_KEYSET error and should not be used!</b></div>


[http://forums.winamp.com/showthread.php?postid=1346355 Forum Thread]


== Introduction ==
== Introduction ==
'''Version:''' 1.1.


This plugin provides you cryptographic interface using CryptoAPI.
This plug-in allows you to generate cryptographic hashes and random numbers. It uses the [https://msdn.microsoft.com/en-us/library/ms867086.aspx Microsoft Cryptography API] (MS-CAPI).  
Using this plugin you can get common cryptographic hashes like MD5, SHA1, MD2, MD4.
 
 
 
== Supported hash algorithms ==
 
MD2, MD4, MD5, SHA1, SHA2, SHA2-384, SHA2-512.
 
The SHA-2 family is only supported on [https://blogs.technet.microsoft.com/pki/2010/09/30/sha2-and-windows/ Windows XP.SP3], Windows 2003 with KB938397, and Vista or higher.
 


Plugin DLL size: 3 660 bytes (not packed), 2 886 bytes (upx packed)


== How to use ==
== Examples ==


=== String Hash ===
=== String hash ===


<highlight-nsis>
<highlight-nsis>
Crypto::HashData "MD5" "String to be hashed"
Crypto::HashData "SHA1" "The quick brown fox jumps over the lazy dog"
Pop $0
Pop $0
DetailPrint Hash=$0 ; 2FD4E1C67A2D28FCED849EE1BB76E7391B93EB12
</highlight-nsis>
</highlight-nsis>
Supported algorithms: MD5|SHA1|MD2|MD4


=== File Hash ===
<highlight-nsis>
<highlight-nsis>
Crypto::HashFile "MD5" "$WINDIR\notepad.exe"
!include LogicLib.nsh
ClearErrors
Crypto::HashData "SHA2" "How vexingly quick daft zebras jump"
Pop $0
Pop $0
${If} ${Errors}
DetailPrint "SHA2 not supported, cannot calculate hash!"
${Else}
DetailPrint "$0" ; 2202BB2E270ED226682C2855AE94144ED192ADB10B5AE9DE93ED4E0A425EA0B6
${EndIf}
</highlight-nsis>
</highlight-nsis>
Supported algorithms: MD5|SHA1|MD2|MD4


[[Category:Plugins]]
 
=== File hash ===
<highlight-nsis>
!include LogicLib.nsh
ClearErrors
Crypto::HashFile "MD5" "$ExePath"
Pop $0
${If} ${Errors}
DetailPrint "Unable to compute the hash!"
${Else}
DetailPrint "MD5 of myself is $0"
${EndIf}
</highlight-nsis>
 
 
=== Random number generator ===
<highlight-nsis>
Crypto::RNG
Pop $0 ; $0 now contains 100 bytes of random data in hex format
StrCpy $0 "0x$0" 18 ; Extract the first 8 bytes
DetailPrint "64-bit random number: $0"
</highlight-nsis>
 
 
 
== History ==
 
1.4 - 20160412 - Anders
* Added RNG
 
 
1.3 - 20160406 - [[User:Anders|Anders]]
* Rewritten from scratch
* Supports SHA-2 on systems with PROV_RSA_AES
* Sets the error flag on errors
 
 
[http://nsis.sourceforge.net/mediawiki/index.php?title=Crypto_plug-in&oldid=23970 1.2 - November 25, 2013  - GAG]
* <strike>Fixed CryptAcquireContext NTE_BAD_KEYSET (0x80090016) and NTE_KEYSET_ENTRY_BAD (0x8009001A) errors</strike>
* Technical note: original Crypto.dll was unpacked and patched (CryptAcquireContext call parameters patched; corresponding relocation records removed; version information updated)
 
 
1.1 - May 6, 2004 - GAG
* Created Hash Calculator example
* Improved documentation
 
 
1.0 - April 7, 2004 - GAG
* Initial release
* Supported algorithms: MD5|SHA1|MD2|MD4|MAC
 
 
 
== Links ==
* [http://forums.winamp.com/showthread.php?p=2977435 Forum thread]
* [[File:Zip.gif]] [http://forums.winamp.com/attachment.php?attachmentid=50873&d=1385414389 hashcalc12.zip] (31.2 KB) (Calculates hashes of strings or files)<BR>

Latest revision as of 12:10, 26 May 2017

Author: GAG (talk, contrib)


Author: Anders (talk, contrib)


Plug-in Info

  • Version: 1.4
  • Type: Runtime plug-in (Ansi & Unicode)
  • Minimum OS: Win95.OSR2 (IE3+), WinNT4 (IE3+)
  • Minimum NSIS version: 2.45
  • License: Freeware
  • Download: Crypto.zip (3 KB)


Version 1.2 and earlier fails on Windows Server with the NTE_BAD_KEYSET error and should not be used!


Introduction

This plug-in allows you to generate cryptographic hashes and random numbers. It uses the Microsoft Cryptography API (MS-CAPI).


Supported hash algorithms

MD2, MD4, MD5, SHA1, SHA2, SHA2-384, SHA2-512.

The SHA-2 family is only supported on Windows XP.SP3, Windows 2003 with KB938397, and Vista or higher.


Examples

String hash

Crypto::HashData "SHA1" "The quick brown fox jumps over the lazy dog"
Pop $0
DetailPrint Hash=$0 ; 2FD4E1C67A2D28FCED849EE1BB76E7391B93EB12
!include LogicLib.nsh
ClearErrors
Crypto::HashData "SHA2" "How vexingly quick daft zebras jump"
Pop $0
${If} ${Errors}
	DetailPrint "SHA2 not supported, cannot calculate hash!"
${Else}
	DetailPrint "$0" ; 2202BB2E270ED226682C2855AE94144ED192ADB10B5AE9DE93ED4E0A425EA0B6
${EndIf}


File hash

!include LogicLib.nsh
ClearErrors
Crypto::HashFile "MD5" "$ExePath"
Pop $0
${If} ${Errors}
	DetailPrint "Unable to compute the hash!"
${Else}
	DetailPrint "MD5 of myself is $0"
${EndIf}


Random number generator

Crypto::RNG
Pop $0 ; $0 now contains 100 bytes of random data in hex format
StrCpy $0 "0x$0" 18 ; Extract the first 8 bytes
DetailPrint "64-bit random number: $0"


History

1.4 - 20160412 - Anders

  • Added RNG


1.3 - 20160406 - Anders

  • Rewritten from scratch
  • Supports SHA-2 on systems with PROV_RSA_AES
  • Sets the error flag on errors


1.2 - November 25, 2013 - GAG

  • Fixed CryptAcquireContext NTE_BAD_KEYSET (0x80090016) and NTE_KEYSET_ENTRY_BAD (0x8009001A) errors
  • Technical note: original Crypto.dll was unpacked and patched (CryptAcquireContext call parameters patched; corresponding relocation records removed; version information updated)


1.1 - May 6, 2004 - GAG

  • Created Hash Calculator example
  • Improved documentation


1.0 - April 7, 2004 - GAG

  • Initial release
  • Supported algorithms: MD5|SHA1|MD2|MD4|MAC


Links