diff --git a/libmat2/archive.py b/libmat2/archive.py
index 2808b9f98717e8b4ce48ee76eaefe115c783ce3c..7b9f3351bc619f5d0123934d3686ff1024e2e5b5 100644
--- a/libmat2/archive.py
+++ b/libmat2/archive.py
@@ -74,7 +74,9 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser):
             temp_folder = tempfile.mkdtemp()
             abort = False
 
-            for item in zin.infolist():
+            # Since files order is a fingerprint factor,
+            # we're iterating (and thus inserting) them in lexicographic order.
+            for item in sorted(zin.infolist(), key=lambda z: z.filename):
                 if item.filename[-1] == '/':  # `is_dir` is added in Python3.6
                     continue  # don't keep empty folders
 
@@ -92,8 +94,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser):
                     pass
                 elif any(map(lambda r: r.search(item.filename), self.files_to_omit)):
                     continue
-                else:
-                    # supported files that we want to clean then add
+                else: # supported files that we want to first clean, then add
                     tmp_parser, mtype = parser_factory.get_parser(full_path)  # type: ignore
                     if not tmp_parser:
                         if self.unknown_member_policy == UnknownMemberPolicy.OMIT: