mirror of
https://github.com/Xevion/easy7zip.git
synced 2026-01-31 10:24:13 -06:00
Add MD5 hash function
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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++)
|
||||
|
||||
@@ -34,6 +34,7 @@ public:
|
||||
kCompressToZipEmail,
|
||||
kHash_CRC32,
|
||||
kHash_CRC64,
|
||||
kHash_MD5,
|
||||
kHash_SHA1,
|
||||
kHash_SHA256,
|
||||
kHash_BLAKE2sp,
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user