我想允许人们提供一个哈希函数的名称的数字指纹某些目的的手段:在Python安全评估字符串调用hashlib
def create_ref(obj, hashfn='sha256'):
"""
Returns a tuple of hexdigest and the method used to generate
the digest.
>>> create_ref({}, 'sha1')
('bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f', 'sha1')
>>> create_ref({}, 'md5')
('99914b932bd37a50b983c5e7c90ae93b', 'md5')
"""
return (eval('hashlib.%s' % hashfn)(unicode(obj)).hexdigest(), hashfn)
是硬编码hashlib
配备充分稳健,以防止滥用的eval
?
这仍然是容易出错的最小值(调用的任何属性hashlib)。他应该确保只有“白名单”功能可以被调用。 – gahooa 2010-11-11 22:17:02
@gahooa:这段代码更EAFP所以如果散列方法不存在,它会引发一个错误,这是没问题:) – mouad 2010-11-11 22:19:16
@gahooa:啊我看到你确实在你的答案中放了一些允许的散列方法嗯,是的好点,但它不是我从OP问题中所理解的:),但仍然很好,你只需完成OP问题并添加了答案:) – mouad 2010-11-11 22:21:09