文档章节

Python档案袋( Json、pickle、加密与解密)

o
 osc_w9s1w4o0
发布于 2019/04/02 21:39
字数 507
阅读 3
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Json是各程序通用的数据格式;pickle是Python特有的,可以存储很多Python特有的数据,如函数地址等

Json的简单使用:

 1 import json
 2 jsondata={
 3     "user":"dong",
 4     "name":"dongxiaodong",
 5     "age":100
 6 }
 7 #字典(json对象)转换为字符串
 8 strjson=json.dumps(jsondata)
 9 print(type(strjson)) #输出:<class 'str'>
10 
11 #字符串转换为json对象
12 dicjson=json.loads(strjson)
13 print(dicjson["age"]) #输出:100

Pickle

Pickle序列化:

 1 import pickle
 2 
 3 def funx1(valuex):
 4     print("---------------",valuex)
 5 
 6 jsondata={
 7     "user":"dong",
 8     "name":"dongxiaodong",
 9     "age":100,
10     "funx":funx1 #保存函数地址,函数地址是以函数名确定的
11 }
12 
13 #序列化,将字典转换为byte对象
14 bytejson=pickle.dumps(jsondata)
15 print(type(bytejson)) #输出:<class 'bytes'>
16 
17 #保存到文件中
18 open("ww.txt","wb").write(bytejson)

Pickle反序列化:

import pickle

#必须有序列化相同的函数名,只要函数名相同即可,参数任意
def funx1():
    print("**********")

strjson=open("ww.txt","rb").read()
#字符串转换为json对象
dicjson=pickle.loads(strjson)

print(dicjson["age"]) #输出:100
dicjson["funx"]() #调用函数,输出:**********

Shelve(对pickle的上层封装)

序列化

import shelve

#打开文件
s=shelve.open("fileshelve")

#建立列表数据
listx=["11","22","33"]

#保存数据
s["listx"]=listx
s["user"]="dongxiaodong"
s["name"]="dong"

#关闭文件
s.close()

反序列化:

import shelve

#打开文件
s=shelve.open("fileshelve")

print(s.get("listx")) #输出:['11', '22', '33']
print(s.get("user")) #输出:dongxiaodong

#关闭文件
s.close()

加密与解密:

Base64 可逆

import base64

#加密
en=base64.b64encode("dongxiaodong".encode("utf-8"))
print(en.decode("utf-8"))  #输出字符串:ZG9uZ3hpYW9kb25n

#解密
de=base64.b64decode(en).decode("utf-8")
print(de) #输出字符串:dongxiaodong

md5 不可逆

import hashlib

#方法一
mx=hashlib.md5() #s生成md5对象

mx.update(b"dongxiaodong") #添加内容,拼接内容
mx.update(b"dd")

# 输出十六进制格式
print(mx.hexdigest()) #输出:f67d530272ebb0cf17ec7cdf2372b6cb


#方法二
mx2=hashlib.md5(b"dongxiaodongdd") 

print(mx2.hexdigest()) #输出:f67d530272ebb0cf17ec7cdf2372b6cb

Sha1 不可逆

import hashlib

s=hashlib.sha1()

s.update(b"dongxiaodongdd")

print(s.hexdigest()) #输出:6a878a19687fc95d76f602d1580b54e0f0d2b88d

Hmac

键值对进行加密

import hmac

#参数(键,值)
h=hmac.new(b"dd",b"dongxiaodong")

#如果存在中文,则需要使用encode
#h=hmac.new(b"dd","东小东dd".encode("utf-8"))

print(h.hexdigest())
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

以太坊智能合约开发常见的10个安全问题

本文介绍CheckMarx安全研究小组通过扫描公开的以太坊智能合约所发现的Solidity智能合约开发中常见的十大安全问题,其中__未检查的外部调用__ 和 高成本循环 分列排行榜前两名。该安全问题排行...

区块链教程
53分钟前
17
0
Android Studio写flutter快捷键

1.stl :代表StatelessWidget 2.stf :StatefulWidget 3.cmd + shift + 减号 :折叠所有代码 4.cmd + 减号 :折叠当前代码块 5.ctrl + r :编译运行 6.cmd + s :hot reload 7.cmd + { :回到...

一代码农码一代
今天
21
0
远程桌面如何修改登录密码

打开运行, C:\Windows\explorer.exe shell:::{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0} 即可 https://www.itexperience.net/10-ways-to-change-password-in-remote-desktop-session/......

ethanleellj
今天
17
0
easyui的menu接收后台集合,并且根据集合利用appendItem动态生成菜单项,判断菜单项的字数大于指定长度,则多余字符以。。。显示,并且悬浮提示

JSP: <a id="bb" href="javascript:void(0);" class="easyui-menubutton" data-options="menu:'#layout_north_stMenu222',iconCls:'icon-cologne-sign-out'" >导出</a><div id="aaa" style......

文文1
今天
13
0
Mysql主从同步

1主从同步 1.1Master 1.1.1配置--编辑 my.cnf #编辑 mysql 的 /etc/my.cnf 配置文件vi /etc/my.cnf#添加如下配置server-id=1 #设置服务 IDlog_bin=mysql-bin #启动 binlog...

风雪满弓刀
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部