Read Me
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
#2023 X March 21 19:50 PM Brasília Time
* *
* Licensa de Copia (C) <2024> <Aurora Boreal> *
* *
* Este programa e software livre: voce pode redistribuir isto e/ou *
* modificar isto sobre os termos do GNU Licensa Geral Pública como 25
* publicado pela Fundacao de Software Livre, tanto a versão 3 da *
* Licensa, ou (dependendo da sua opcao) qualquer versao posterior. *
* *
* Este programa e distribuido na esperanca que isto vai ser util, *
* mas SEM QUALQUER GARANTIA; sem ate mesmo a implicada garantia de *
* COMERCIALIZAcaO ou CABIMENTO PARA UM FIM PARTICULAR. Veja a *
* Licensa Geral Publica para mais detalhes. *
* *
* Você deve ter recebido uma cópia da LICENSA GERAL PUBLICA e a GNU *
* Licensa Publica Menor junto com este programa *
* Se não, veja <http://www.gnu.org/licenses/>. *
* *
* Suporte: sourceforge.net github.com *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Pereira: arsoftware25@gmail.com ricardo@arsoftware.net.br *
* xcx: arsoftware10@gmail.com charli@arsoftware.net.br *
Yasmin: yasmin@arsoftware.net.br *
pereira1001@users.sourceforge.net
*/
BW Checksum DLL
Win64/32 dll to compute very fast the checksum of
strings or files using RSP32, Adler32, CRC32, MD5, SHA-1,
SHA-256, MD5_32, SHA-512, SHA3-512, RIPEMD160 and Keccak-512
Now with multi-thread support
Where are the files?
the .net framework 4.5.1 sample project is the file .\rspchecksum\files\checksum.sln
for the win64 files goto the folder .\rspchecksum\files\checksum\bin\x64\Release
and for the source code of the dll goto the folder .\rspchecksum\files\checksum\bin\x64\Release\c sourcecode
Docs: Doxygen based docs in file, version 3.2.7 for the moment
-> ./rspchecksum/files/checksum/bin/doc_new/html/files.html <-
What is new in the version 3.2.7 build 00229 Codename Valentine
(19/december/2024)
New documentation, the 3.2.7, with doxygen 1.12.0,
minor modifications.
What is new in the version 3.2.2 build 00228
(18/march/2024)
Added a new fast checksum derived from Adler32,
the ds32, notice that the size of the slice
generating need to be a multiple of 4 or a different
checksum will be gerated, internally it works
with chunks of 4 bytes each time and a unique
addition, despite the simplicity it is as secure
as Adler32, give it a try, it is in rsp32.c file,
minor modifications.
What is new in the version 3.2.1 build 00227
(06/march/2024)
Added code to avoid the Spin Count multi-thread
bug, even if difficult to occur, minor
modifications.
What is new in the version 3.2.0 build 00226
(02/march/2024)
Added the possibility to compile the DLL file
with Visual Studio 2022 C compiler, minor
modifications.
What is new in the version 2.6.7 build 00173
(27/july/2022)
Converted the sample project to Visual Studio
2022, minor modifications.
What is new in the version 2.6.6 build 00172
(15/may/2022)
Added docs in the C portions of the package
What is new in the version 2.6.5 build 00171
(Terça 05 Outubro 2021 07:59)
First complete release with full multi-thread
support for the checksums
If 1 thread is selected the resulting checksum
is the standard checksum, if not it will generate
a different value for the hash, you need to know
in what number of threads the hash was done in order
to check it, make your tests
What is new in the version 1.8.4 build 00090
(Sun 03/October/2021 20:19:24)
Compiled with gcc 11.2.0 and all the compiler warnings,
next release will generate the checksums using many
threads to speed up execution, it will be a must, minor
modifications.
What is new in the version 1.8.1 build 00087
(Mon 21/December/2020 10:20:57, by bhond)
Added SHA3-512 and Keccak-512, minor modifications.
What is new in the version 1.5.9 build 00065
(Tue 08/December/2020 17:10:46, by bhond)
Added RIPEMD160, minor modifications.
What is new in the version 1.5.2 build 00058
(Mon 07/December/2020 11:00:36, by Ale dad)
Added SHA-512 to the list, it is used as the
mingw64 installation system because some people
consider it secure enough, small modifications
on the sample project, recompilation with mingw
9.2.0 and ming64 10.2.0, minor modifications
What is new in the version 1.0.0 build 0006
(Mon Aug 06 16:06:09 2018, by morcego48)
Updated the sample project to .net framework
4.5.1, small modifications in the sample
project, minor modifications.
What is new in the version 0.2.1 build 0005
(20 May 2011)
First win64 release, minor modifications.
Features
- Ability to generate the checksum using
Adler32, CRC32 , MD5 , SHA-1 and SHA-256
- The process occurs in an in-process code
loaded in the same address space of the
application using the dll
Description
SHA-1 Description
Secure Hash Standard.
This Standard specifies a secure hash algorithm, SHA-1, for
computing a condensed representation of a message or a data file.
When a message of any length < 2^64 bits is input, the SHA-1
produces a 160-bit output called a message digest.
The SHA-1 is called secure because it is computationally
infeasible to find a message which corresponds to a given
message digest, or to find two different messages which
produce the same message digest.
Any change to a message in transit will, with very high
probability, result in a different message digest, and
the signature will fail to verify.
SHA-1 is a technical revision of SHA (FIPS 180).
The SHA-1 is based on principles similar to those used
by Professor Ronald L. Rivest of MIT when designing the
MD4 message digest algorithm, and is closely modelled
after that algorithm.
The MD5 Message-Digest Algorithm
The algorithm takes as input a message of arbitrary
length and produces as output a 128-bit "fingerprint"
or "message digest" of the input.
It is conjectured that it is computationally infeasible
to produce two messages having the same message
digest, or to produce any message having a given
prespecified target message digest.
The MD5 algorithm is intended for digital signature
applications, where a large file must be "compressed"
in a secure manner before being encrypted with a
private (secret) key under a public-key cryptosystem
such as RSA.
The MD5 algorithm is designed to be quite fast on
32-bit machines.
In addition, the MD5 algorithm does not require any
large substitution tables; the algorithm can be coded
quite compactly.
The MD5 algorithm is an extension of the MD4
message-digest algorithm .
MD5 is slightly slower than MD4, but is more
"conservative" in design.
MD5 was designed because it was felt that MD4 was
perhaps being adopted for use more quickly than
justified by the existing critical review; because
MD4 was designed to be exceptionally fast, it is
"at the edge" in terms of risking successful
cryptanalytic attack.
MD5 backs off a bit, giving up a little in speed
for a much greater likelihood of ultimate security.
It incorporates some suggestions made by various
reviewers, and contains additional optimizations.
The MD5 algorithm is being placed in the public
domain for review and possible adoption as a standard.
Description of SHA-512
For more information about SHA-512 visit:
https://en.wikipedia.org/wiki/SHA-2
Description of SHA-256
The SHA-256 compression function operates on a
512-bit message block and a 256-
bit intermediate hash value.
It is essentially a 256-bit block cipher algorithm
which encrypts the intermediate hash value using
the message block as key.
CRC32 Description
Generate a table for a byte-wise 32-bit CRC
calculation on the polynomial:
x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
Polynomials over GF(2) are represented in binary,
one bit per coefficient,
with the lowest powers in the most significant bit.
Then adding polynomials is just exclusive-or, and
multiplying a polynomial by x is a right shift by
one.
If we call the above polynomial p, and represent a
byte as the polynomial q, also with the lowest power
in the most significant bit (so the byte 0xb1 is the
polynomial x^7+x^3+x+1), then the CRC is (q*x^32)
mod p, where a mod b means the remainder after
dividing a by b.
This calculation is done using the shift-register
method of multiplying and taking the remainder.
The register is initialized to zero, and for each
incoming bit, x^32 is added mod p to the register
if the bit is a one (where x^32 mod p is p+x^32 =
x^26+...+1), and the register is multiplied mod p
by x (which is shifting right by one and adding
x^32 mod p if the bit shifted out is a one).
We start with the highest power (least significant
bit) of q and repeat for all eight bits of q.
The table is simply the CRC of all possible eight
bit values.
This is all the information needed to generate CRC's
on data a byte at a time for all
combinations of CRC register values and incoming
bytes.
(This description come from the sources of Zlib
compression )
Adler32 Description
Adler32 is a very fast checksum based on the sum of
the high word with the low word of a dword value in
a sequence of input bytes
The dword is sliced in two words and the sum is
calculated and mod against 65521 , the result value
is added to a dword value that is the return value of
the computation
This is the fastest checksum available to win32 , and
provide almost the same security of the CRC32
Notice that if you want to speed up it a little
you only need to remove the mod call, with the same
security
RSP32 is an enhancement over Adler32 but at least
in my machine it is slower than CRC32, then CRC32 is the best
option to 32 bits checksum security
Documentation
Documentation is available online in the homepage
Homepage
see above
Homepage of the DLL
https://sourceforge.net/projects/rspchecksum/
Email
see above
Thanks to you for using our software, it is what Feline says
BW 2024