Add md5 type checksum type.

This commit is contained in:
Kevin Baensch 2024-11-23 23:30:28 +01:00
parent f7151eba30
commit dd4c963667
Signed by: derped
GPG key ID: C0F1D326C7626543
2 changed files with 28 additions and 0 deletions

View file

@ -3,8 +3,10 @@ from typing import Dict, Optional, Type
from fck.cktype.cktypeinterface import CKTYPEINTERFACE as CKTYPEINTERFACE from fck.cktype.cktypeinterface import CKTYPEINTERFACE as CKTYPEINTERFACE
from .crc32 import CRC32 from .crc32 import CRC32
from .md5 import MD5
CKTYPES: Dict[str, Type[MD5 | CRC32]] = { CKTYPES: Dict[str, Type[MD5 | CRC32]] = {
"MD5": (MD5),
"CRC32": (CRC32), "CRC32": (CRC32),
} }

26
fck/cktype/md5.py Normal file
View file

@ -0,0 +1,26 @@
from typing import List
from re import compile, Pattern
from hashlib import md5
class MD5(object):
NAME: str = "MD5"
EXT: List[str] = [".md5"]
SYNTAX: List[Pattern] = [compile(r"^;*$"), compile(r"^.* [0-9a-fA-F]{8}$")]
REGEX: Pattern = compile(r"[0-9a-fA-F]{32}")
NULL: str = "D41D8CD98F00B204E9800998ECF8427E"
def __init__(self):
self.cksum = md5(usedforsecurity=False)
def gensum(self, data: bytes):
self.cksum.update(data)
def reset(self):
self.__init__()
def format(self, fpath) -> str:
return " ".join([self.__repr__(), fpath])
def __repr__(self) -> str:
return self.cksum.hexdigest().upper()