提交 1f7d47f0 authored 作者: Daren Eiri's avatar Daren Eiri 提交者: Frederic Bastien

md5 to sha256

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