美文网首页
Hash函数

Hash函数

作者: Co_zy | 来源:发表于2017-11-28 22:05 被阅读0次

摘要算法又称为哈希算法,散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)用于加密相关的操作。
图解MD5: https://mp.weixin.qq.com/s/n7OnxPwslilW8nSBjQ719A

1.Python3实现MD5
import hashlib
def get_md5(str1):
    m = hashlib.md5()
    m.update(str1.encode('utf-8'))
    return m.hexdigest()
if __name__ == '__main__':
    print(get_md5('password'))

hashlib提供主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法
以上加密算法虽然很厉害,但仍然存在缺陷,通过撞库可以反解。所以必要对加密算法中添加自定义key再来做加密.其实加盐是为了应对这么一种情况:如果两个人或多个人的密码相同,那么通过相同的加密算法得到的是相同的结果。这样会造成哪些后果呢?首先,破解一个就有可能是相当于破一片密码。而且加入小明这个用户可以查看后台数据库,那么如果他观察到小红这个用户的密码跟自己的密码是一样的(虽然都是密文),那么,也就代表他们两个人的密码是相同的。所以他就可以用小红的身份进行登录了。
其实,我们只要稍微混淆一下就能防范住了,这在加密术语中称为“加盐”。具体来说就是在原有材料(用户自定义密码)中加入其他成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。

import hashlib
hash = hashlib.md5('python'.encode('utf-8'))
hash.update('password'.encode('utf-8'))
print(hash.hexdigest())
2.SHA1
import hashlib
def get_sha1(str1):
    m = hashlib.sha1()
    m.update(str1.encode('utf-8'))
    return m.hexdigest()
if __name__ == '__main__':
    print(get_sha1('password'))
3.获取文件md5值
import hashlib
import os
def md5sum(filename):
        """
        用于获取文件的md5值
        :param filename: 文件名
        :return: MD5码
        """
        if not os.path.isfile(filename):  # 如果校验md5的文件不是文件,返回空
            return
        myhash = hashlib.md5()
        f = open(filename, 'rb')
        while True:
            b = f.read(8096)
            if not b:
                break
            myhash.update(b)   
        f.close()
        return myhash.hexdigest()

print(md5sum('filepath'))

相关文章

  • Golang标准库——hash

    hash hash包提供hash函数的接口。 type Hash Hash是一个被所有hash函数实现的公共接口。...

  • 哈希算法

    哈希算法 什么是hash函数?常见的hash算法hashlib的用法hash算法的用途 什么是hash函数? 哈希...

  • 应用类问题

    1. Hash算法 Hash函数是将输入键(key)转换为一个确定输出的函数。这个输出成为散列值。一个Hash函数...

  • hash函数

  • Hash函数

    摘要算法又称为哈希算法,散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符...

  • Hash 函数

    1. hash https://stackoverflow.com/questions/44695684/stru...

  • iOS hash函数与isEqual方法思考

    说到hash函数,我们就需要了解一下Hash表,那么什么是hash表呢,在我的理解就是一个数组。通过hash函数将...

  • python中的hash()和id()的区别

    hash() hash(object) -> integer hash函数返回一个整数。两个值相同的对象的hash...

  • 现代密码学:Hash函数Keccak

    Hash函数的核心在于设计压缩函数。可以证明,如果压缩函数具有抗碰撞能力,那么迭代Hash函数也具有抗碰撞能力。2...

  • 计算文件哈希值

    什么是哈希值? 哈希值(hash values)是使用哈希函数(hash function)计算得到的值。哈希函数...

网友评论

      本文标题:Hash函数

      本文链接:https://www.haomeiwen.com/subject/zdxybxtx.html