zoukankan      html  css  js  c++  java
  • json模块与hashlib模块的使用

    """
    # json&pickle模块
    # 1.什么是序列化
    # 2.为何要有序列化
    # 3.如何做序列化与反序列化
    1.序列化指的是把内存数据类型转换成一个特定格式的内容,该格式的内容
    可用于存储或传输给其他平台使用
    内存的数据类型------》序列化-----------》特定格式(json、pickle模式)
    内存的数据类型《-------反序列化《---------特定格式(json、pickle模式)
    2.如何要有序列化?
    序列化得到结果----》特定格式的用途有两种用途
    1.可用于存储----》用来存档
    2.传输给其他平台使用-----》跨平台数据交互
    强调:针对用途2的特定格式:应该是一种通用,能被所有语言识别的格式json
    针对用途1的特定格式:应该是一种专用的模式pickle


    """
    import json
    res=json.dumps([1,'aaa',True,False])
    print(res,type(res))#[1, "aaa", true, false] <class 'str'>
    res=json.loads(res)
    print(res,type(res))#[1, 'aaa', True, False] <class 'list'>

    # 将序列化结果写入文件简单方法
    with open("test.json","wt",encoding="utf-8")as f:
    json.dump([666,'yoona',False,True],f)
    with open("test.json","rt",encoding="utf-8")as f:
    res=json.load(f)
    print(res)
    #json验证:json格式兼容的是所有语言通用的数据类型,不能识别单一语言类型
    # json.jumps({1,2,3,6,4})
    #json强调:搞清楚json格式,不要与python混淆
    """
    1.什么是哈希hash?
    hash是一种算法,该算法接收传入的内容,经过运算得到一串hash值
    hash值的特点:
    1.1传入的内容一样,得到的hash值必然一样
    1.2不能由hash值反解成内容
    1.3只要使用的hash算法不变,得到的hash值长度是一定的
    2.hash的用途
    12345abc------>hash字符串
    客户端-------hash字符串----------服务端
    hash值即密文密码
    特点1.2用于密码密文传输与验证
    特点1.1与1.3用于文件完整性校验
    3.如何用?

    """
    # 原材料---------hash工厂---------hash值
    """
    import hashlib
    m=hashlib.md5()
    m.update("hello".encode("utf-8"))
    m.update(b"world")
    res=m.hexdigest()
    print(res)
    # 利用撞库破解密码
    import hashlib
    # res=hashlib.md5(b"yoona123")
    # res=res.hexdigest()
    # print(res)
    dic={}
    pwd="a26bdd1136c3401ed70d8e45a6c52751"
    passwords=["yoo12na3","yo12ona3","321noyao","yoona123","yoo321na"]
    for i in passwords:
    res=hashlib.md5(i.encode("utf-8"))
    dic[i]=res.hexdigest()
    print(dic)
    for k,v in dic.items():
    if v==pwd:
    print("密码破解成功!密码是%s"%k)
    break

    """
    #提升撞库成本 ----》密码加盐
    import hashlib
    m=hashlib.md5()
    m.update("烟笼寒水月笼纱".encode("utf-8"))
    m.update("hello".encode("utf-8"))
    m.update("夜泊秦淮近酒家".encode("utf-8"))
    print(m.hexdigest())
  • 相关阅读:
    JS实现 div拖拽 限制在屏幕内
    国际化配置simple_form
    simple_form模板templates erb haml
    git rolify
    rails模板生成bootstrap格式的simple_form的erb文件
    rails生成器生成自定义controller模板
    ubuntu 终端常用命令(转)
    Ruby for Rails笔记
    Java基础
    javascript ybmiaov
  • 原文地址:https://www.cnblogs.com/mayrain/p/12607042.html
Copyright © 2011-2022 走看看