Add MD5 hash function

This commit is contained in:
Tino Reichardt
2018-11-01 23:08:00 +01:00
parent 9947dd780b
commit add56b5aed
7 changed files with 378 additions and 0 deletions
+2
View File
@@ -4,6 +4,7 @@ COMMON_OBJS = \
$O\CrcReg.obj \
$O\DynLimBuf.obj \
$O\IntToString.obj \
$O\MD5Reg.obj \
$O\MyMap.obj \
$O\MyString.obj \
$O\MyVector.obj \
@@ -289,6 +290,7 @@ C_OBJS = \
$O\XzDec.obj \
$O\XzEnc.obj \
$O\XzIn.obj \
$O\md5.obj \
!include "../../Aes.mak"
!include "../../Crc.mak"
+2
View File
@@ -4,6 +4,7 @@ COMMON_OBJS = \
$O\CrcReg.obj \
$O\DynLimBuf.obj \
$O\IntToString.obj \
$O\MD5Reg.obj \
$O\MyMap.obj \
$O\MyString.obj \
$O\MyVector.obj \
@@ -287,6 +288,7 @@ C_OBJS = \
$O\XzDec.obj \
$O\XzEnc.obj \
$O\XzIn.obj \
$O\md5.obj \
!include "../../Aes.mak"
!include "../../Crc.mak"
+2
View File
@@ -223,6 +223,7 @@ static const CHashCommand g_HashCommands[] =
{
{ CZipContextMenu::kHash_CRC32, "CRC-32", "CRC32" },
{ CZipContextMenu::kHash_CRC64, "CRC-64", "CRC64" },
{ CZipContextMenu::kHash_MD5, "MD5", "MD5" },
{ CZipContextMenu::kHash_SHA1, "SHA-1", "SHA1" },
{ CZipContextMenu::kHash_SHA256, "SHA-256", "SHA256" },
{ CZipContextMenu::kHash_BLAKE2sp, "BLAKE2sp", "BLAKE2sp" },
@@ -934,6 +935,7 @@ STDMETHODIMP CZipContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO commandInfo)
case kHash_BLAKE2sp:
case kHash_XXH32:
case kHash_XXH64:
case kHash_MD5:
case kHash_All:
{
for (unsigned i = 0; i < ARRAY_SIZE(g_HashCommands); i++)
+1
View File
@@ -34,6 +34,7 @@ public:
kCompressToZipEmail,
kHash_CRC32,
kHash_CRC64,
kHash_MD5,
kHash_SHA1,
kHash_SHA256,
kHash_BLAKE2sp,
+40
View File
@@ -0,0 +1,40 @@
// MD5Reg.cpp
#include "StdAfx.h"
#include "../../C/md5.h"
#include "../Common/MyCom.h"
#include "../7zip/Common/RegisterCodec.h"
class CMD5Hasher:
public IHasher,
public CMyUnknownImp
{
MD5_CTX _ctx;
Byte mtDummy[1 << 7];
public:
CMD5Hasher() { MD5_Init(&_ctx); }
MY_UNKNOWN_IMP1(IHasher)
INTERFACE_IHasher(;)
};
STDMETHODIMP_(void) CMD5Hasher::Init() throw()
{
MD5_Init(&_ctx);
}
STDMETHODIMP_(void) CMD5Hasher::Update(const void *data, UInt32 size) throw()
{
MD5_Update(&_ctx, (const Byte *)data, size);
}
STDMETHODIMP_(void) CMD5Hasher::Final(Byte *digest) throw()
{
MD5_Final(&_ctx, digest);
}
REGISTER_HASHER(CMD5Hasher, 0x205, "MD5", 16)