Python内置模块#3

本文围绕Python展开,介绍了序列化模块json,阐述了序列、序列化、反序列化的概念及json模块用法。还提及pickle模块,其与json用法类似但支持所有数据类型且只能在Python中用。此外,介绍了hashlib模块及摘要算法,最后给出注册登陆加密练习题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、序列化模块 json

1.什么是序列:

序列就是字符串

2.什么是序列化:

序列化就是把其他数据类型转换成json字符串的过程

3.什么是反序列化:

把json字符串转化成其他数据类型的过程就是反序列化

4 . json 模块用法

import josn  导入模块

dic = {'name':'sb','age':99}  定义字典
du = json.dumps(dic)  dumps将字典转为json字符串,序列化

print(du)  #{"name": "sb", "age": 99}打印出来时带有双引号的就是json字符串
print(json.loads(du))  loads将json字符串转换为字典,反序列化



with open('a.txt', 'w', encoding='utf-8')as f:
    f.write(json.dumps(dic))  dumps将字典转为json字符串写入到文件
	json.dump(dic, f)  dump将字典转为json字符串写入到文件



with open('a.txt', 'r', encoding='utf-8')as fs:
    res = json.load(fs)  load将字符串json反序列化并从文件中读取出来

print(res)

二、pickle模块

pickle模块的使用方法和json模块是一样的,都是有四种方法,但是json模块支持的数据类型是有限的,而pickle模块是支持所有的数据类型但是转换的是二进制字符串;pickle只能在Python中使用,而json模块在所有的语言中都能使用。

import pickle
dic = {'name':'sb','age':99}

print(pickle.dumps(dic))  #b'\x80\x04\x95\x19\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x04name\x94\x8c\x02sb\x94\x8c\x03age\x94Kcu.'
res = pickle.dumps(dic)
print(pickle.loads(res))  # {'name': 'sb', 'age': 99}

with open('a.txt', 'wb')as f:
    pickle.dump(dic, f)

with open('a.txt', 'rb')as fs:
    print(pickle.load(fs))

三、hashlib模块

hashlib 是一个提供了一些流行的hash(摘要)算法的Python标准库.其中所包括的算法有 md5, sha1, sha128, sha256, sha384, sha512等
什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

1. 加密算法的基本操作

# 1.选择加密算法,这里用的是md5
m = hashlib.md5()

# 2.需要加密的内容
m.update('我是jack'.encode('utf-8'))  # .encode('utf-8')转换为二进制

# 3.打印加密结果
print(m.hexdigest())  # 33355fa205e22b729448725e26860473 


1.不管你要加密的数据内容有多长,加密的结果长度都是一样的,前提是相同算法
2.只要加密的数据是一样的,那么加密的结果一定是一样的,前提是算法相同
练习题:注册用户名和密码加密后,再成功登陆
# 注册
username1 = input('输入账号')
password2 = input('输入密码')
m1 = hashlib.md5()  # 1.确定加密算法
m1.update(password2.encode('utf-8'))  # 2. 把输入的密码加密
new1 = m1.hexdigest()[0:16]  # 3. 将获取的加密结果切片,让更加保密
der = '%s|%s' % (username1, new1)  # 4. 取得用户名和加密后的密码
with open('aaa.txt', 'w', encoding='utf-8')as f:
    f.write(der)  # 5. 把取得用户名和加密后的密码写入到文件,注意我这里写的是覆盖写

# 登录  
# 需要把登录账号的密码再次加密后作比较
username = input('user>>>>>>>')  # 1.输入注册好的用户名
password = input('password>>>')  # 2.输入注册好的用户密码
m = hashlib.md5()  # 3.确定加密算法 
m.update(password.encode('utf-8'))  # 4. 再次把输入的密码加密,这样才能登录验证
new = m.hexdigest()[0:16]  # 5. 再次把输入的密码加密结果切片
with open('aaa.txt', 'r', encoding='utf-8')as f:
    new_username,new_password = f.read().split('|')  # 6.读取文件后的结果切分并且赋值给new_username,new_password这两个变量名
    if new_username==username and new_password == new:  # 7.判断用户名和加密后的密码是否正确
        print('登录成功')
    else:
        print('账号或密码错误')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值