diff --git a/pytools/persistent_dict.py b/pytools/persistent_dict.py
index c33f2404ebff71a9cc825f38dca0bef678f0227f..c559299e524765317d1ad0af0f9234f718ae9b21 100644
--- a/pytools/persistent_dict.py
+++ b/pytools/persistent_dict.py
@@ -173,6 +173,10 @@ class ItemDirManager(CleanupBase):
 # {{{ key generation
 
 class KeyBuilder:
+    # this exists so that we can (conceivably) switch algorithms at some point
+    # down the road
+    new_hash = hashlib.sha256
+
     def rec(self, key_hash, key):
         digest = None
 
@@ -187,7 +191,7 @@ class KeyBuilder:
             except AttributeError:
                 pass
             else:
-                inner_key_hash = hashlib.sha256()
+                inner_key_hash = self.new_hash()
                 method(inner_key_hash, self)
                 digest = inner_key_hash.digest()
 
@@ -205,7 +209,7 @@ class KeyBuilder:
                         method = self.update_for_specific_dtype
 
             if method is not None:
-                inner_key_hash = hashlib.sha256()
+                inner_key_hash = self.new_hash()
                 method(inner_key_hash, key)
                 digest = inner_key_hash.digest()
 
@@ -224,7 +228,7 @@ class KeyBuilder:
         key_hash.update(digest)
 
     def __call__(self, key):
-        key_hash = hashlib.sha256()
+        key_hash = self.new_hash()
         self.rec(key_hash, key)
         return key_hash.hexdigest()