diff --git a/src/python/OBis/obis/dm/git.py b/src/python/OBis/obis/dm/git.py
index 0e87cd14c3e7ed26f182925dea492e1ed62fd9c8..dad15e9137261dc485575224f711287e07a7c30e 100644
--- a/src/python/OBis/obis/dm/git.py
+++ b/src/python/OBis/obis/dm/git.py
@@ -1,3 +1,4 @@
+import hashlib
 import json
 import shutil
 import os
@@ -152,13 +153,18 @@ class ChecksumGeneratorCrc32(object):
 
 class ChecksumGeneratorMd5(object):
     def get_checksum(self, file):
-        md5_result = run_shell(['md5', file], raise_exception_on_failure=True)
         return {
-            'checksum': md5_result.output.split(" ")[-1],
+            'checksum': self.md5(file),
             'checksumType': 'MD5',
             'fileLength': os.path.getsize(file),
             'path': file
         }
+    def md5(self, file):
+        hash_md5 = hashlib.md5()
+        with open(file, "rb") as f:
+            for chunk in iter(lambda: f.read(4096), b""):
+                hash_md5.update(chunk)
+        return hash_md5.hexdigest()
 
 
 class ChecksumGeneratorGitAnnex(object):