zoukankan      html  css  js  c++  java
  • Python基础-----hashlib模块

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-

    import hashlib

    #用于加密相关的操作,python 3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

    #################################################### md5 #####################################################
    # md5 字符串只可以单向加密成密文,不能反解。(可通过撞库进行解密)
    # 如果用于登录密码验证,则可以将密码转换为密文进行比对验证即可

    obj = hashlib.md5() #调用md5消息摘要算法

    obj.update('test message'.encode('utf-8')) #对指定的算法进行加密,加密长度为32位的字节形式

    print(obj.hexdigest()) # c72b9698fa1927e1dd12d3cf26ed84b2 每个字符串都有唯一值

    obj.update('try'.encode('utf-8')) #3a2430952b0188616a70607cce878631 ==> 等价于对'test messagetry'加密
    print(obj.hexdigest())

    #所以可以通过给用户定义的字符串‘加盐’key来增加密文的复杂度

    obj1 = hashlib.md5('password'.encode('utf-8')) #调用md5消息摘要算法,并在该处指定用其他字符串来辅助加密 ‘加盐’

    obj1.update('test message'.encode('utf-8'))

    print(obj1.hexdigest()) # c13bbb52245a85ec55bedfb309a4bfb1

    #以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密
    import hashlib

    ######################################################## 256 ########################################################

    hash = hashlib.sha256('898oaFs09f'.encode('utf8'))
    hash.update('alvin'.encode('utf8'))
    print (hash.hexdigest())#e79e68f070cdedcfe63eaf1a2e92c83b4cfb1b5c6bc452d214c1b7e77cdfd1c7

    #python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
    import hmac
    h = hmac.new('alvin'.encode('utf8'))
    h.update('hello'.encode('utf8'))
    print (h.hexdigest())#320df9832eab4c038b6c1d7ed73a5940
  • 相关阅读:
    github上传本地项目
    vue.js form表单提交
    vue.js 数据交互 ajax
    锐浪报表字段分割
    前台与后台的数据交互(node.js与mysql)
    canvas标签__线段(新手随笔)
    canvas标签—矩形(新手随笔)
    项目显示页面思路(新手随笔)
    jQuery 属性(新手学习随笔)
    node.js 创建第一个应用
  • 原文地址:https://www.cnblogs.com/Meanwey/p/9788585.html
Copyright © 2011-2022 走看看