collision weaknesses

15.1. hashlib — Secure hashes and message digests — Python 3.5.6 documentation https://docs.python.org/3.5/library/hashlib.html

import hashlib


def hashlib_str(str, type='sha224'):
    if type == 'sha224':
        return hashlib.sha224(str).hexdigest()
    elif type == 'sha256':
        return hashlib.sha224(str).hexdigest()
    elif type == 'sha384':
        return hashlib.sha384(str).hexdigest()
    elif type == 'sha512':
        return hashlib.sha512(str).hexdigest()
    elif type == 'md5':
        return hashlib.md5().hexdigest()
    elif type == 'sha1':
        return hashlib.sha1().hexdigest()


l = ['剑网三 唐门的 武器材料提示我用光了 很多技能不能用 找了很久不知道在什么地方买', '剑网三方买',
     '剑网三 唐门的 武器材料提示我用光了 很多技能不能用 找了很久不知道在什么地方买剑网三 唐门的 武器材料提示我用光了 很多技能不能用 找了很久不知道在什么地方买']
'''
SELECT SUM(1) FROM  question;
11652677

SELECT SUM(LENGTH(title))/(SELECT SUM(1) FROM  question) FROM question;
57.1070
'''
type_l = ['sha224', 'sha256', 'sha384', 'sha512', 'md5', 'sha1']
for str in l:
    for t in type_l:
        str_ = str.encode(encoding='utf-8')
        print(t, len(str), len(hashlib_str(str_, type=t)))

  

sha224 40 56
sha256 40 56
sha384 40 96
sha512 40 128
md5 40 32
sha1 40 40
sha224 5 56
sha256 5 56
sha384 5 96
sha512 5 128
md5 5 32
sha1 5 40
sha224 80 56
sha256 80 56
sha384 80 96
sha512 80 128
md5 80 32
sha1 80 40

 

在避免哈希冲突的情况下,尽可能用少的字符串;

 

posted @ 2018-11-28 11:16  papering  阅读(169)  评论(0编辑  收藏  举报