zoukankan      html  css  js  c++  java
  • 加密

    一、MD5加密
    加密的步骤如下:

    import hashlib
    m = hashlib.md5() #第一步创建一个MD5对象
    m.update(b'hello') #第二步把内容转为字节写进去
    # m.update(bytes('hello',encoding='utf-8')) #第二步把内容转为字节写进去
    print(m.digest())#第三步进行加密,2进制格式的加密
    print(m.hexdigest())#第三步进行加密,16进制格式的加密
    返回结果:
    b'#xb41xacxfexb4x1ex15xd4fxd7]xe8"0|'
    23b431acfeb41e15d466d75de822307c
    注意:加密的内容要是字节格式的,如果是字符串的话会报错,还有使用bytes和b都是将字符串转为字节,可注意bytes后面需说明encoding='utf-8',不然会报错
    加密的小函数如下:
    import hashlib
    def md5Password():
    password = input('plz enter your passwd:').strip()
    m = hashlib.md5()
    m.update(bytes(password,encoding='utf-8'))
    # m.update(b'%s'%password) #用这个也是一样的
    new_passwd = m.hexdigest()
    print('加密后为:%s'%new_passwd)
    return new_passwd
    md5Password()
    返回结果:
    plz enter your passwd:123456
    加密后为:e10adc3949ba59abbe56e057f20f883e
    注意MD5加密之后的值是不可以解密的
    撞库:有一个网站的数据库存存的加密后的数据和原来的字符串,如果输入的原字符在库里存在的话,就去库里筛选,存在就取出来,不存在就查不到

    彩虹表:存了很多常用的密码,从表里一个一个尝试,确定密码是不是正确的

    注意:以后写程序的时候,如果判断登陆的账号密码是否正确的话,就需要判断,在已有的库里面是不是存在的
    sha1等是另外的一种加密方式,加密的方式用法都是一样的

    二.其他方式加密

    hashlib模块,主要用于加密相关的操作,在python3的版本里,代替了md5和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。
    1.MD5加密范例一
    m = hashlib.md5()  #创建一个MD5对象
    m.update(b"Hello")
    print(m.digest())
    print(m.hexdigest())
    返回结果:
    b"x8bx1ax99Sxc4ax12x96xa8'xabxf8xc4xx04xd7"
    8b1a9953c4611296a827abf8c47804d7
    2.MD5加密范例二
    m = hashlib.md5() #创建一个MD5对象??
    m.update(bytes("Hello",encoding='utf-8'))
    print(m.digest())
    print(m.hexdigest())
    返回结果:
    b"x8bx1ax99Sxc4ax12x96xa8'xabxf8xc4xx04xd7"
    8b1a9953c4611296a827abf8c47804d7
    注意:
    上述的两个例子,返回结果是一样的,可在update的时候,一个使用的b一个使用的是bytes,注意他们之间的区别,并且在update里面直接输入字符是报错的,必须使用b/bytes转换才可以

    3.sha1加密范例
    hash = hashlib.sha1()
    hash.update(b'123456')
    print(hash.hexdigest())
    print(len(hash.hexdigest())) #加密之后字符长度为40
    7c4a8d09ca3762af61e59520943dc26494f8941b
    4.sha256加密范例
    hash = hashlib.sha256()
    hash.update(b'123456')
    print(hash.hexdigest())
    print(len(hash.hexdigest())) #加密之后字符长度为64

    8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
    5.sha384加密范例
    hash = hashlib.sha384()
    hash.update(b'123456')
    print(hash.hexdigest())
    print(len(hash.hexdigest())) #加密之后字符长度为96
    0a989ebc4a77b56a6e2bb7b19d995d185ce44090c13e2984b7ecc6d446d4b61ea9991b76a4c2f04b1b4d244841449454
    6.sha512加密范例
    hash = hashlib.sha512()
    hash.update(b'123456')
    print(hash.hexdigest())
    print(len(hash.hexdigest())) #加密之后字符长度为128
    ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413


  • 相关阅读:
    linux 运维工程师发展路线
    Linux 系统巡检常用命令
    svn 服务器部署
    linux python2.x 升级python3.x
    201871010131张兴盼《面向对象程序设计(java)》第二周学习总结 201871010131
    201871010131张兴盼《面向对象程序设计(java)》第一周学习总结 201871010131
    《2019面向对象程序设计(java)课程学习进度条》 201871010131
    张兴盼201871010131 《面向对象程序设计(java)》第六、七周学习总结 201871010131
    201871010131张兴盼《面向程序设计(java)》第四周学习总结 201871010131
    201871010131张兴盼《面向对象程序设计(java)》第八周学习总结 201871010131
  • 原文地址:https://www.cnblogs.com/MLing/p/7096770.html
Copyright © 2011-2022 走看看