HIME: Huge Integer Math and Encryption 2.05.1
HIME: Huge Integer Math and Encryption 2.05.1 Ranking & Summary
HIME: Huge Integer Math and Encryption 2.05.1 description
HIME: Huge Integer Math and Encryption 2.05.1 is a collection of functions letting you to implement RSA public key, AES (Rijndael) secret key encryption and digital signatures (with SHA-512, SHA-256, SHA-1 or MD5(*) ) in your programs, which also contains functions for huge prime number generation, cryptographically secure random number generation (a.o. Blum-Blum-Shub and RSA), Diffie-Hellman key exchange algorithm and huge integer number mathematical operations.
Furthermore, HIME has compression and decompression functions and HIME can securely erase files (file shredding). Also, HIME is the ideal toolkit for number theory applications.
- 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), 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, Liberty Basic, Delphi, PowerBASIC, EBasic (Emergence Basic) 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, XP and Vista)
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!
Major Features:
- Basic math features
- 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 features
- 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 features
- 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 features
- 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 features
- 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 features
- 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 features
- 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 features
- 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 features
- 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 features
- 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 features
- hi_Compress : Compress data (with 5 possible compression algorithms)
- hi_Decompress : Decompress data
- Data security features
- 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 features
- 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
Enhancements:
- 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.
Requirements: 32Mb RAM
WareSeeker Editor
HIME: Huge Integer Math and Encryption 2.05.1 Screenshot
HIME: Huge Integer Math and Encryption 2.05.1 Keywords
Bookmark HIME: Huge Integer Math and Encryption 2.05.1
HIME: Huge Integer Math and Encryption 2.05.1 Copyright
Want to place your software product here?
Please contact us for consideration.
Contact WareSeeker.com