Presents

          

After September 2014, HIME can not be purchased anymore.


Current version: H I M E   V 2 . 0 5 . 7
 

HIME V2.05.7 is the most complete crypto toolkit ever.
Now also available as a PowerBASIC (*) static library (.sll).

 

Cryptography regulations

Cryptography software is considered 'dual use goods' by most governments because it can be used for both civil and military use.
To comply with Belgian export regulations of dual use goods, DevOTechS has an export license to sell HIME to customers in these countries.
Before trying to make a purchase, please check if your country is on this list.
 

 

 

What is HIME ?
Buy
Why should you choose HIME as a crypto lib?
List of functions
Available versions
Didn't find what you were looking for?
Need a custom tool?
HIME history

What is HIME ?
HIME stands for Huge Integer Math and Encryption library.
  • It is a cryptography toolkit for Windows programmers that allows to implement public key encryption, secret key encryption, data security and digital signatures using one of the many one-way secure hash functions in your programs.
     
  • Public (asymmetric) key encryption and digital signatures with RSA ; standard version or the CRT (Chinese Remainder Theorem) version. Optional RSA padding according to PKCS#1 v1.5 .
     
  • Secret (symmetric) key encryption with AES (Rijndael) in 3 different block cipher modes or ArcFour (RC4 compatible) (**).
     
  • Hash functions:  SHA-512, SHA-256, SHA-1, MD5, CRC32 (**).
     
  • Keyed-Hash message authentication code (HMAC) according to FIPS 198.
     
  • HIME also contains functions for huge prime number generation, factoring and cryptographically secure random number generation (a.o. Blum-Blum-Shub and RSA). True random number data can be retrieved from an internet server.
     
  • The Diffie-Hellman key exchange algorithm to securely exchange session keys.
     
  • HIME has compression and decompression functions with multiple compression algorithms to choose from.
     
  • HIME is thread-safe (re-entrant) for use in multi-threaded applications or concurrent environments.
     
  • HIME has functions for easily handling data, arranged as records with fields.
     
  • HIME has functions for converting data between various formats: huge integer, Base64, decimal, hex, ascii binary.
     
  • HIME has functions for securely erasing disk files and free disk space.
     
  • HIMEs huge integer number mathematical, bit manipulation and boolean functions can serve as building blocks for implementing other public key encryption schemes or performing math calculations with arbitrary precision.
     
  • HIMEs huge integer math functions are ideal for number theory applications.
     
  • A huge integer number in HIME can be hundreds of millions of digits long; 2^31 (2147483648) bits long to be exact. That's over 268 MILLION decimal digits!
     
  • HIME is a 32 bits dll, so every programming language that can access a standard Win32 dll can use HIME: C, C++, C#, Visual Basic 5/6, VB.Net, Delphi, PowerBASIC, PureBASIC, Liberty Basic, EBasic (Emergence Basic), BBC BASIC, Euphoria, Java, Macromedia Director (with GLU32)...
    HIME can be used in MS Office (MS Access, MS Excel, MS Word)
    (***) using VBA (Visual Basic for Applications).
    .NET (dot NET) languages can use HIME as an 'unmanaged code dll'.
     
  • HIME comes with demo and test programs (including their source code) to show HIMEs performance and as an example of how to use HIME.
     
  • Demo code in Visual Basic 5/6, C++, C#, VB.Net, BBC BASIC, Liberty Basic, Delphi, PowerBASIC, EBasic (Emergence Basic), MS Excel, MS Access and PureBASIC are also included.
     
  • HIME was written in PowerBASIC (*) and inline assembler.
     
  • HIME is designed to support all Windows operating systems.
    Tested on Windows 98, Windows XP, Windows Vista and Windows 7 (64 bits).

 

(*) PowerBASIC is copyright of PowerBASIC, Inc ( www.powerbasic.com ).

(**) RC4 and MD5 are trademarks of RSA Data Security Inc.

(***) MS Office, MS Access, MS Excel, MS Word are all trademarks of Microsoft Corporation.


 

 

 

Why should you choose HIME as a crypto lib?
There exist more than a few commercial, open source or freeware cryptography libraries or toolkits.
They usually have one or more things in common:
  • They have a complex user interface, so it is not easy to use them.
  • It takes a fair amount of time to study them before you can use them. The learning curve is long...
  • The freeware packages usually are only source code, no binaries.
  • The commercial libraries are very expensive. Some require a licence per user.

If this has always been an obstruction for you to use encryption in your programs, then you definitely should give HIME a try!
You will find that HIME :

  • is very easy to use, in whatever programming language you prefer.
  • has almost no learning curve. You are up and running in minutes!
  • is simple and straightforward.
  • has everything you need to tackle encryption and data security in your application program.
  • has an extensive manual with a function reference section, but also a section with background and 'how to' information for people less familiar with cryptography.
  • contains mathematical functions to program crypto algorithms not yet implemented in HIME or to build number theory applications.
  • is affordable for anyone. It is a low-cost but not a low-quality solution!
  • has no time limit in the freeware version, so you can try-before-you-buy for as long as you want!

 


 

 

 

List of functions

HIME contains the following functions. Functions marked as NEW! are new in the latest HIME version :

Basic math functions

hi_Add          : Add 2 huge integers
hi_Decr         : Decrement huge integer in register with one
hi_Div          : Divide 2 huge integers. Returns quotient and remainder
hi_DivBy2       : Divide a huge integer by 2
hi_ExtEuclidAlgo: Perform the Extended Euclidean Algorithm
hi_GCD          : Calculate the greatest common divisor of 2 huge integers
hi_Incr         : Increment huge integer in register with one
hi_Mod          : Modulo operation: h1 mod h2 (remainder of division)              
hi_ModInv       : Modulo of inverse huge integer: h1^-1 mod h2              
hi_Mul          : Multiply 2 huge integers             
hi_MulBy2       : Multiply a huge integer by 2               
hi_Pow          : Raise h1 to the power of h2: h1^h2              
hi_PowMod       : h1^h2 mod h3
hi_Root_N       :
Calculate the Nth root of a huge integer number, and the remainder in case h1 is not a perfect power
hi_Root_Sqrt    :
Calculate the square root of a huge integer number, and the remainder in case h1 is not a perfect square
hi_Square       : Square a huge integer
hi_Sub
          : Subtract 2 huge integers

 

Bit manipulation functions

hi_And          : Perform a bitwise AND operation on 2 operands
hi_BitClear     : Clear a specified bit in a register operand
hi_BitSet       : Set a specified bit in a register operand
hi_BitToggle    : Toggle a specified bit in a register operand
hi_Not          :
Perform a bitwise NOT operation on an operand
hi_Or           : Perform a bitwise OR operation on 2 operands
hi_Xor          :
Perform a bitwise XOR operation on 2 operands

 

Boolean functions

hi_IsBitSet       : Test the value of a specified bit
hi_IsEqual        : Test if 2 huge integers are equal
hi_IsLess         : Test if 1 huge integer is less (smaller) than the other          
hi_IsNotEqual     : Test if 2 huge integers are not equal          
hi_IsOdd          : Test if a huge integer is odd
hi_IsZero
         : Test if a huge integer is zero
hi_IsRegAllocated : Test if specified register is allocated or not

 

Register functions

A register is a HIME internal variable, used to exchange data with HIME.
hi_CopyReg             : Copy one register to another register
hi_FormatAsHuge        :
Make datalength a multiple of 4 bytes, according to the huge integer format
hi_GetReg              : Get the contents of a register and store it in a string          
hi_GetRegAdd           : Get the contents of a register. Return memory address and number of bytes
hi_GetRegAdd2          : Get the contents of a register. Store register contents at specified address
hi_GetRegAsciiz1       : Get an asciiz string from a register, method 1
hi_GetRegAsciiz2       : Get an asciiz string from a register, method 2
hi_GetRegByte          : Get a single byte from a register (with index)
hi_GetRegDword         :
Get 4 bytes from a register as a dword variable (32 bits unsigned integer)
hi_GetRegLong          :
Get 4 bytes from a register as a long variable (32 bits signed integer)
hi_GetRegToClipboard   : Get data from a register and store in clipboard
hi_GetRegToFile        : Get data from a register and store it in a file
hi_PutReg              : Put dynamic string data in a register
hi_PutRegAdd           : Put data in a register. Data defined
hi_PutRegAsciiz        : Put an asciiz string into a register
hi_PutRegDword         :
Store a dword value (32 bits unsigned integer) into a HIME register
hi_PutRegFromClipboard : Get data from the clipboard and store in a register
hi_PutRegFromFile      : Put data in a register. The data is retrieved from a file
hi_PutRegLong          :
Store a long value (32 bits signed integer) into a HIME register
hi_Rec_AddField        : Add a field to a 'record'. A record is a HIME register with a special format.
hi_Rec_GetField        : Retrieve a field from a 'record'. A record is a HIME register with a special format.
hi_Rec_GetNrFields     : Get the number of fields that are stored in a record.
hi_RegAllocate         : Allocate a HIME register and return the register number.
hi_RegAllocateMultiple : Allocate multiple HIME registers
hi_RegAllocateRange    : Allocate a range of HIME registers.
hi_RegChangeEndian     : Change endianness of the contents of the specified register 
hi_RegClear            : Clear contents of register
hi_RegCompare          : Compare the value of 2 huge integer registers
hi_RegConcatByte       : Concatenate a byte to a register
hi_RegConcatReg        : Concatenate a register to a register 
hi_RegGetLen           : Get length of register data
hi_RegMaxAllocated     : Get the maximum number of registers that was allocated during a session.
hi_RegReverse          : Reverse the contents of the specified register
hi_RegSplit            : Split the contents of a register in 2 parts: a left and a right part
hi_RegUnAllocate       : Unallocate a HIME register that was previously allocated.
hi_RegUnAllocateRange  : Unallocate a range of HIME registers.
hi_SwapReg
             : Swap contents of 2 registers

 

Encryption/Decryption functions

hi_Decrypt_AES_1Block : Decrypt ciphertext into plaintext with the AES symmetric key algorithm
hi_Decrypt_AES_ECB    : Decrypt ciphertext into plaintext with the AES symmetric key algorithm in ECB mode
hi_Decrypt_AES_CBC    : Decrypt ciphertext into plaintext with the AES symmetric key algorithm in CBC mode
hi_Decrypt_Arc4       : Decrypt ciphertext into plaintext with the ArcFour (RC4) encryption algorithm  
hi_Decrypt_RSA        : Decrypt ciphertext into plaintext with the RSA assymmetric key algorithm
hi_Decrypt_RSA_CRT    : Decrypt ciphertext into plaintext with the RSA-CRT assymmetric key algorithm
hi_Encrypt_AES_1Block : Encrypt 1 block of plaintext into ciphertext with the AES symmetric key algorithm 

hi_Encrypt_AES_ECB    : Encrypt plaintext into ciphertext with the AES symmetric key algorithm in ECB mode 
hi_Encrypt_AES_CBC    : Encrypt plaintext into ciphertext with the AES symmetric key algorithm in CBC mode
hi_Encrypt_Arc4       : Encrypt plaintext into ciphertext with the ArcFour (RC4) encryption algorithm  

hi_Encrypt_RSA        : Encrypt plaintext into ciphertext with the RSA asymmetric key algorithm
hi_GenerateRSAKeys
   
: Generate a keypair (private, public key and modulus) for the RSA algorithm
hi_GenerateRSAKeys_CRT: Generate a keypair (private, public key and modulus) for the RSA-CRT (Chinese Remainder Theorem) algorithm
hi_RSA_Pad_PKCS1_1_5  : Increase the RSA plaintext security by padding it according PKCS#1 v1.5
hi_RSA_Unpad_PKCS1_1_5: Remove padding to retrieve the original plaintext after RSA decryption
 

Diffie-Hellman key exchange functions

hi_DH_GenParams : Generates the two parameters P and G to be used in the Diffie-Hellman key exchange algorithm
hi_DH_Step1     : Generates the users public key, and an optional private key
hi_DH_Step2     :
Generates the shared key

 

Hash functions

hi_Hash_CRC32   : Calculate the CRC32 hashvalue (checksum) of a string
hi_Hash_MD5    
: Calculate the MD5 hashvalue of a string
hi_Hash_SHA_1  
: Perform the SHA-1 secure hash algorithm
hi_Hash_SHA_256
: Perform the SHA-256 secure hash algorithm
hi_Hash_SHA_512
: Perform
the SHA-512 secure hash algorithm
hi_HMAC_FIPS198
: Calculates a HMAC according to NIST FIPS 198

 

Random number functions

hi_GenerateBBSRandomBits    : Generate a number of random bytes with the Blum-Blum-Shub algorithm
hi_GenerateRandom           : Generate a number of random bytes
hi_GenerateRSAKeys          : Generate a keypair (private, public key and modulus) for the RSA algorithm
hi_GenerateRSARandomBits    : Generate a number of random bytes with the RSA algorithm
hi_GetRandomBytesFromServer :
Get true random bytes from an internet server
hi_InitBBS                  : Calculate parameters for 'hi_GenerateBBSRandomBits'

 

Prime number and factoring functions

hi_Factor_Pollards_Rho: Find a factor of a huge integer number by implementing Pollard's Rho algorithm
hi_Factor_TrialDiv    : Find a factor of a huge integer by dividing it by prime numbers
hi_Factors            : Find all factors of a given huge integer number
hi_GeneratePrime
      : Generate a huge integer prime number of required bit length
hi_GetPrimeFromTable  :
Get prime number from the lower primes internal table 
hi_IsPrime_Div        : Test if huge integer is prime by dividing by lower prime numbers
hi_IsPrime_F          : Test if huge integer is prime by using Fermats little theorem       
hi_IsPrime_RB         : Test if huge integer is prime by using the Rabin-Miller test        
hi_IsPrime_Slow       : Test if huge integer is prime (slow but 100% sure algorithm)       
hi_IsRelPrime         : Test if 2 huge integers are relative prime (have no common factors)
hi_ReadPrimes
         : Initialize the table with lower primes for use by hi_GeneratePrime and hi_IsPrime_Div

 

Data conversion functions

hi_Base642Huge
: Convert a string in Base64 format to a huge variable
hi_Bin2Huge    : Convert binary ascii string to huge integer

hi_BreakString : Format an (ascii) string for display purposes
hi_Dec2Huge
    : Convert decimal ascii string to huge integer
hi_Hex2Huge    : Convert hex (ascii) string to huge binary variable
hi_Huge2Base64 : Convert huge variable to a string in Base64 format
hi_Huge2Bin    : Convert huge integer to binary ascii string
hi_Huge2Dec    : Convert huge integer to decimal ascii string          
hi_Huge2Hex    : Convert huge integer to hexadecimal ascii string
hi_TrimLZeroes
: Remove leading zeroes in an ascii string

 

Compression functions 

hi_Compress    : Compress data (with 5 possible compression algorithms)
hi_Decompress  :
Decompress data

 

Data security functions 

hi_RegWipe     : 'Burn' a register, i.e. overwrite it with random data before clearing it.
hi_ShredDisk   : Securely delete the free space of a disk.
hi_ShredFile   : Securely delete a file by overwriting its data with various patterns.
hi_StackWipe
   : Wipes (overwrites) the currently unused part of the stack to remove any traces of 'old' data.
 

 

Miscellaneous functions 

hi_CheckTestVectors_AES         : Test the AES routines
hi_CheckTestVectors_Arc4        : Run some test vectors on the ArcFour (RC4) algorithm
hi_CheckTestVectors_HMAC_FIPS198:
Run some test vectors on the ArcFour (RC4) algorithm
hi_CheckTestVectors_MD5         : Check proper functioning of HIMEs MD5 function
hi_CheckTestVectors_SHA_1       : Test the SHA-1 routines
hi_CheckTestVectors_SHA_256     : Test the SHA-256 routines
hi_CheckTestVectors_SHA_512     : Test the SHA-512 routines
hi_GetGlobalError               : Get global error value
hi_GetOption                    : Get the value of a HIME option
hi_HIMEParams_LoadFromFile
      : NEW! Function to make HIME start up faster
hi_HIMEParams_SaveToFile
        : NEW! Save HIME internal parameters to file for faster startup
hi_Register                     : Register HIME
hi_SetOption                    : Set a HIME option
hi_Version
                      : Get versionnumber of HIME

 


 

 

 

 

Available versions
HIME is available in 3 different versions. All of these versions contain atleast the HIME dll, the HIME helpfile, a demo and a test program (as well as their source code).

The freeware version

  • It is free,
  • It has no time limitation, so you can use it for as long as you want,
  • It has no functional limitation
  • It does have a nagscreen
  • It can be downloaded here

 

The registered version

  • By registering (purchasing) HIME, you receive a license key. When using this key, HIME does not display any nagscreens anymore and operates invisible in the background.
  • To purchase a HIME license key, go here
  • Note that you can obtain a free HIME license key via TrialPay ! 

 

The registered version + source code

  • You can also register for a license key and the HIME source code. The source code is in PowerBASIC and inline assembler.
  • To purchase a HIME license key, go here


 

 

 

Didn't find what you were looking for?

Do you need a feature or a function that you did not find in HIME?
Please let us know what you are looking for. Drop us an e-mail with your feature request and we'll see what we can do.


 

 

 

Need a custom tool?

You need a certain tool or program that makes use of HIME functionality but you don't have the time or knowledge to write it yourself?
Drop us an e-mail to describe what you need and we'll see what we can do.


 

 

 

HIME history
 

V2.05.7  - August 8, 2012

 

- hi_Hash_SHA_256 sometimes returned an incorrect hash value for certain input data. The chance of this happening seemed greater when the length of the input data MOD 4 was 3 (if the number of bytes of the input data divided by 4 gives a remainder of 3). 

For your convenience, the 'old' version of this function is still included in HIME and can be called by the name 'hi_Hash_SHA_256_V1'. 

 

 

V2.05.6  - May 8, 2012

 

- Minor internal change. When HIME.sll was linked to a main program, investigating the resulting executable with 'view dependencies' would show a list of the HIME function names. This has been changed so that no HIME function names are shown anymore.

 

V2.05.5  - April 29, 2012

- Minor internal change. When linking HIME.sll during compilation an error 817 could occur.

 

V2.05.4  - August 11, 2011

- Minor internal change.

 

V2.05.3  - May 6, 2011

- No functional change.
- HIME is now also available as a PowerBASIC static library (HIME.sll) for use with the PowerBASIC compilers PBWin 10 or PBCC 6 or higher versions. ( www.powerbasic.com )
 

V2.05.2  - April 13, 2010

- No functional change.
- Minor bugfix in
hi_RSA_Pad_PKCS1_1_5. When calling this function, a console window would pop up, showing some information. This behaviour is removed. 

 

V2.05.1  - December 25, 2008

- No functional change.
- The HIME nagscreen was changed. You will only notice this when using HIME without a license key.

 

V2.05  - January 17, 2008

- New functions:

  • hi_HIMEParams_LoadFromFile  : This function retrieves a set of HIME internal parameters and data from a file. This allows HIME to start up faster.
  • hi_HIMEParams_SaveToFile      : This function allows you to store the current set of HIME internal parameters to a file.

 

V2.04  - January 1, 2008

The HIME helpfile now comes in two formats: a HTML Help (.chm) file and a WinHelp (.hlp) file.

- New functions:

  • hi_CheckTestVectors_HMAC_FIPS198 : Run some testvectors on the HMAC algorithm
  • hi_Factor_TrialDiv : Find a factor of a huge integer by dividing it by prime numbers
  • hi_Factor_Pollards_Rho : Find a factor of a huge integer number by implementing Pollard's Rho algorithm
  • hi_Factors : Find all factors of a given huge integer number
  • hi_FormatAsHuge : Make datalength a multiple of 4 bytes, according to the huge integer format
  • hi_GetPrimeFromTable : Get a lower prime number from the internal predefined primes table.
  • hi_GetRegDword : Get 4 bytes from a register as a dword (32 bits unsigned integer)
  • hi_GetRegLong : Get 4 bytes from a register as a long (32 bits signed integer)
  • hi_HMAC_FIPS198 : Calculates a HMAC according to NIST FIPS 198a
  • hi_PutRegDword : Store a dword (32 bits unsigned integer) into a HIME register
  • hi_PutRegLong : Store a long (32 bits signed integer) into a HIME register
  • hi_Root_N : Calculate the Nth root of a huge integer number
  • hi_Root_Sqrt : Calculate the square root of a huge integer number
  • hi_RSA_Pad_PKCS1_1_5 : Increase the plaintext security before encrypting it with RSA
  • hi_RSA_Unpad_PKCS1_1_5 : Remove padding to retrieve the original plaintext after RSA decryption
  • hi_ShredDisk : Securely delete the free space of a disk
     

- Improved functions:

  • hi_ShredFile : This function can now be executed in asynchronous or in synchronous mode. Function parameters have changed since V2.03 !
  • hi_Incr : Improved for speed
  • hi_Decr : Improved for speed

 

V2.03  - January 25, 2007

- Bug fixed in the pre-compiled HIME.dll. When calling HIME functions from a thread and when running multiple threads simultaneously, under certain circumstances the nagscreen could pop up, even when using a valid license key. The HIME source code does not have this problem since it does not have nagscreen code.

 

V2.02  - January 17, 2007

- hi_Div: Bug fixed. If input parameters of a particular format, related to each other, were fed to Hi_Div, a Division Error (#DE) would occur, immediately crashing the application. Apart from this special situation, Hi_Div did function correctly.

 

V2.01  - January 12, 2007

- hi_Compress: Bug fixed: This bug could make a HIME application program cause a General Protection Fault (GPF) when the length of the data to compress was smaller than about 600 bytes and LZSS was used. In the case that the GPF would not occur, compression was correct.
- Minor modifications to the help file.

 

V2.0  - December 21, 2006

- Code speed-up:

Most of the Huge Integer math routines were rewritten from scratch to increase calculation speed. Naturally, all the HIME functions that use these routines benefit from this. Like all the HIME public key functions.
Following routines have been optimised for speed:

  • hi_Add, hi_Sub, hi_Decr, hi_Incr.
  • hi_DivBy2, hi_MulBy2
  • hi_Mul, hi_Div
  • hi_Pow
  • hi_IsLess
  • hi_ModInv
  • hi_PowMod
  • hi_GenerateBBSRandomBits, hi_GenerateRSARandomBits
  • hi_Huge2Dec, hi_Dec2Huge
  • hi_Huge2Hex, hi_Hex2Huge
  • hi_Huge2Bin, hi_Bin2Huge
  • hi_IsPrime_Slow, hi_IsPrime_Div, hi_IsPrime_RB
  • hi_ReadPrimes

- Modifications:

  • hi_GenerateRSAKeys: You can now preset 'e' with a low value like 3 ,17 or 65537.
  • hi_SetOption and hi_GetOption got extra options: #3 and #4
  • hi_Hash_SHA_256: Removed Critical Section.
  • hi_Huge2Hex, hi_Huge2Dec and hi_Huge2Bin now also accept input data that is not an exact multiple of 4 bytes long
     

- New functions:

  • hi_Square: faster than hi_Mul h1, h1.
  • hi_GenerateRSAKeys_CRT: Calculate keys for RSA-CRT (RSA algorithm with Chinese Remainder Theorem)
  • hi_Decrypt_RSA_CRT : Decryption with RSA-CRT.
  • hi_ExtEuclidAlgo: Extended Euclidean Algorithm
  • hi_GetRegAdd2: Get HIME register contents and store at specified address
  • hi_Hash_SHA_512: Calculate SHA-512 hash value
  • hi_CheckTestVectors_SHA_512: Check the SHA-512 algorithm for correct functioning
  • hi_Compress: Compress data with 5 possible compression algorithms
  • hi_Decompress: Decompress compressed data
  • hi_GetRegToFile : Get the contents of a register. Store data in a file
  • hi_PutRegFromFile : Put data in a register. Data is retrieved from a specified file
  • hi_ShredFile: Securely erase (cleanse, sanitize) a file
  • hi_GetRandomBytesFromServer: Get true random bytes from an internet server
  • hi_GetRegToClipboard: Get data from a register and store on the clipboard
  • hi_PutRegFromClipboard: Get data from the clipboard and store in a register
  • hi_And: Perform a bitwise AND operation on 2 operands
  • hi_Not: Perform a bitwise NOT operation on an operand
  • hi_Or  : Perform a bitwise OR operation on 2 operands
  • hi_Xor: Perform a bitwise XOR operation on 2 operands
  • hi_BitClear: Clear a specified bit in a register operand
  • hi_BitSet: Set a specified bit in a register operand
  • hi_BitToggle: Toggle a specified bit in a register operand
  • hi_IsBitSet: Test the value of a specified bit
  • hi_RegCompare: Compare the values of 2 huge integer registers
  • hi_RegAllocateMultiple: Allocate multiple registers

 

 

V1.04.2  - February 9, 2006

- Minor internal changes.
 

V1.04.1  - July 29, 2005

- Improved help file,
- Internal changes.


V1.04  - May 20, 2005

- Modifications:

  • HIME is now re-entrant (thread-safe)
  • HIME code was optimised

- New functions:

  • hi_Rec_AddField : This function adds a field to a 'record'. A record is a HIME register with a special format.
  • hi_Rec_GetField  : This function retrieves a field from a record (a HIME register) with a special format.
  • hi_Rec_GetNrFields : This function gets the number of fields that are stored in a record.
  • hi_RegAllocate         : Allocate a HIME register and return the register number.
  • hi_RegUnAllocate     : Unallocate a specified HIME register that was previously allocated.
  • hi_RegAllocateRange : Allocate a range of HIME registers.
  • hi_RegUnAllocateRange : Unallocate a range of HIME registers that was previously allocated.
  • hi_IsRegAllocated    : Check if specified register is allocated or not.
  • hi_RegMaxAllocated : Get the maximum number of registers that was allocated during this session.
  • hi_RegWipe              : Wipes (overwrites) the contents of a HIME register.
  • hi_StackWipe           : Wipes (overwrites) the currently unused part of the stack to remove any traces of old data.

- Bugfixes :

  • hi_Hash_SHA_256 : function returned incorrect results when both input and output register were the same.
  • hi_Hash_MD5 : function returned incorrect results when both input and output register were the same.

 

 

V1.03  - June 23, 2004

- New functions:

  • hi_RegSplit         : Split the contents of a register in 2 parts: a left and a right part
  • hi_SetOption      : Set a HIME option
  • hi_GetOption      : Get a HIME option
  • hi_Hash_CRC32 : Calculate the CRC32 hashvalue (checksum) of a string
  • hi_Hash_MD5                        : Calculate the MD5 hashvalue of a string
  • hi_CheckTestVectors_MD5    : Check proper functioning of HIMEs MD5 function
  • hi_RegChangeEndian             : Change endianness of the contents of the specified register.
  • hi_RegReverse                       : Reverse the contents of the specified register
  • hi_Hash_SHA_1                     : Calculate SHA-1 hashvalue
  • hi_CheckTestVectors_SHA_1: Check proper functioning of HIMEs SHA-1 function
  • hi_Encrypt_Arc4                    : ArcFour (RC4) encryption routine
  • hi_Decrypt_Arc4                    : ArcFour (RC4) decryption routine
  • hi_CheckTestVectors_Arc4 : run some test vectors on the ArcFour (RC4) algorithm
  • hi_RegClear           : Clear contents of register
  • hi_RegGetLen        : Get length of register data
  • hi_RegConcatByte : Concatenate a byte to a register
  • hi_RegConcatReg  : Concatenate a register to a register
  • hi_PutRegAsciiz    : Put an asciiz string into a register
  • hi_GetRegAsciiz1  : Get an asciiz string from a register, method 1
  • hi_GetRegAsciiz2  : Get an asciiz string from a register, method 2
  • hi_GetRegByte      : Get a single byte from a register (with index)
  • hi_Bin2Huge         : Convert binary ascii string to huge integer
  • hi_Incr                  : Increment huge integer in register with one
  • hi_Decr                 : Decrement huge integer in register with one
  • hi_TrimLZeroes    : Remove leading zeroes in an ascii string


- Modifications:

  • You can now change the number of internal HIME registers.
  • hi_Hash_SHA_256: changed endianness of returned hash value.

- Bugfix:

  • hi_Huge2Base64 : function returned incorrect results when both input and output register were the same.

 

V1.02.1  - May 10, 2004

Minor improvements:

  • hi_DH_GenParams: Speed improvement (5 to 500 times faster)
  • hi_ReadPrimes      : This function now returns the previous number of primes

 

V1.02  - April 23, 2004

- New functions:

  • hi_DH_GenParams: Generate parameters P and G for Diffie-Hellman
  • hi_DH_Step1         : Generate a Diffie-Hellman public key
  • hi_DH_Step2         : Generate a Diffie-Hellman shared key
  • hi_Huge2Base64   : Convert huge variable to a string in Base64 format
  • hi_Base642Huge   : Convert a string in Base64 format to a huge variable
  • hi_Hex2Huge        : Convert hexadecimal ascii string to huge integer
  • hi_BreakString      : Format ascii string

- Modifications:

  • hi_Huge2Dec : Improved execution speed (2 to 6 times faster)
  • hi_Huge2Bin : Bugfix: Display order of LONGwords was reversed
  • Added demo files for Delphi and PureBasic
  • Increased the number of internal HIME registers from 10 to 20
  • Added resource file with dll file version info

     

V1.01  - January 21, 2004

  • Added AES secret key encryption/decryption functions
  • Added SHA-256 Secure Hash Algorithm function
  • Added testvector functions for the AES and SHA-256 routines
  • Optimised the Rabin-Miller prime checking algorithm
     

V1.00  - January 5, 2004

  • Initial release


 

 


 
 



 

Copyright DevOTechS. All Rights reserved.