zoukankan      html  css  js  c++  java
  • MD5加密

    MD5:是一种不可逆的加密算法.它是可靠的,并且安全的.在python中我们不需要手写这一套算法.

    只需要引入一个叫hashlib的模块就能搞定MD5的加密工作.

    import hashlib 
    
    obj = hashlib.md5()
    obj.update("alex".encode("utf-8")) #加密的必须是字节
    miwen = obj.hexdigest()
    print(miwen)    #534b44a19bf18d20b71ecc4eb77c572f

    但是仅仅是这样仍然不够安全,因为这样的密文通过一个所谓的MD5解密工具是有可能解密成功的

    这是因为撞库的问题.由于MD5的原始算法已经存在很久了.那就有些人用一些简单的排列组合来计算MD5.然后当出现

    相同的MD5密文的时候就很容易反推出原来的数据是什么.所以并不是MD5可逆.而是有些别有用心的人把MD5的常见

    数据已经算完并保留起来了

    那如何应对?我们只需要佳燕就行了,在使用MD5的时候.给函数的参数传递一个byte即可.

    import hashlib
    
    obj = hashlib.md5(b"fsfdkhsgskjl125dhh")    #加盐
    obj.update("alex".encode("utf-8"))  # 加密的必须是字节
    miwen = obj.hexdigest() #6a89b5b541444af45a7927d42f43757d
    print(miwen)

    MD5的应用:

    # md5使用
    def jiami(content):
        obj = hashlib.md5(SALT)
        obj.update(content.encode("utf-8"))
        return obj.hexdigest()
    
    # 注册
    # username = input("请输入你的用户名:")   # alex
    # password = input("请输入你的密码:")
    # password = jiami(password) # c3d4fe3dce88533a8b50cf2e9387c66d
    # print(password)
    
    
    uname = "alex"
    upwd = "c3d4fe3dce88533a8b50cf2e9387c66d"
    
    username = input("请输入你的用户名:")
    password = input("请输入你的密码:")
    
    if uname == username and upwd == jiami(password):
        print("登录成功")
    else:
        print("失败")

    所以.以后存密码就不要存明文了,姚村密文.安全并且.这里加的盐不能改来改去.否则,整套密码就都乱了

  • 相关阅读:
    Tomcat内存溢出的三种情况及解决办法分析
    详解:贝叶斯算法(bayesian)在GCMail反垃圾邮件系统中的应用
    关于solr schema.xml 和solrconfig.xml的解释
    Java流操作,InputStream、OutputStream及子类FileInputStream、FileOutputStream;BufferedInpu
    Introduce Null Object(引入Null对象)
    Solr Schema.xml和solrconfig.xml分析
    @InitBinder
    程序员修炼之道
    JSTL 标签库详细介绍资料
    Spring Mvc入门实例
  • 原文地址:https://www.cnblogs.com/af1y/p/9936767.html
Copyright © 2011-2022 走看看