/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #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 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 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 -> ./rspchecksum/files/checksum/bin/doc/html/files.html <- 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 2021