提交 98eaa375 authored 作者: Daren Eiri's avatar Daren Eiri 提交者: Frederic Bastien

resolve md5 hashing for FIPS

Added usedforsecurity=False for hashlib.md5()
上级 b7b5dd39
......@@ -295,8 +295,8 @@ class ParamsType(Type):
# (see c_support_code() below).
fields_string = ','.join(self.fields).encode('utf-8')
types_string = ','.join(str(t) for t in self.types).encode('utf-8')
fields_hex = hashlib.md5(fields_string).hexdigest()
types_hex = hashlib.md5(types_string).hexdigest()
fields_hex = hashlib.md5(fields_string, usedforsecurity=False).hexdigest()
types_hex = hashlib.md5(types_string, usedforsecurity=False).hexdigest()
return '_Params_%s_%s' % (fields_hex, types_hex)
def has_type(self, theano_type):
......
......@@ -552,17 +552,17 @@ if PY3:
msg = msg.encode()
# Python 3 does not like module names that start with
# a digit.
return 'm' + hashlib.md5(msg).hexdigest()
return 'm' + hashlib.md5(msg, usedforsecurity=False).hexdigest()
else:
import hashlib
def hash_from_code(msg):
try:
return hashlib.md5(msg).hexdigest()
return hashlib.md5(msg, usedforsecurity=False).hexdigest()
except TypeError:
assert isinstance(msg, np.ndarray)
return hashlib.md5(np.getbuffer(msg)).hexdigest()
return hashlib.md5(np.getbuffer(msg), usedforsecurity=False).hexdigest()
def hash_from_file(file_path):
......
......@@ -1221,7 +1221,7 @@ def var_descriptor(obj, _prev_obs=None, _tag_generator=None):
name = '<ndarray:'
name += 'strides=[' + ','.join(str(stride)
for stride in obj.strides) + ']'
name += ',digest=' + hashlib.md5(obj).hexdigest() + '>'
name += ',digest=' + hashlib.md5(obj, usedforsecurity=False).hexdigest() + '>'
elif hasattr(obj, 'owner') and obj.owner is not None:
name = str(obj.owner.op) + '('
name += ','.join(var_descriptor(ipt,
......@@ -1265,7 +1265,7 @@ def hex_digest(x):
Returns a short, mostly hexadecimal hash of a numpy ndarray
"""
assert isinstance(x, np.ndarray)
rval = hashlib.md5(x.tostring()).hexdigest()
rval = hashlib.md5(x.tostring(), usedforsecurity=False).hexdigest()
# hex digest must be annotated with strides to avoid collisions
# because the buffer interface only exposes the raw data, not
# any info about the semantics of how that data should be arranged
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论