随笔- 63  文章- 0  评论- 0  阅读- 5285 

今日总结

  • 购物车实现讲解

  • hashlib加密模块

  • logging日志模块

 

购物车实现讲解

 

 

 

hashlib加密模块

# 什么是加密
将明文(人看得懂)数据通过一些手段变成密文数据(人看不懂)
   密文数据的变现形式一般都是一串没有规则的字符串

# 加密算法
加密算法有很多种>>>(将明文变密文的内部规则)
   算法的难易程度可以根据产生密文的长短来判断
  越长意味着算法越复杂
# 什么时候使用加密
涉及到隐私数据的时候 应该考虑使用加密
   最为常见的就是对用户的密码加密 防止密码泄露
#基本使用
import hashlib
   1.指定算法>>>:md5算法(最为常见 一般的业务需求足够了)
   md5 = hashlib.md5()
   2.将明文数据传递给算法对象
   md5.update(b'hi')  # 只能接收bytes类型
   """如果字符串中纯数字和英文 那么直接在前面加b转成bytes类"""
   3.获取加密之后的密文数据
   res = md5.hexdigest()
   print(res)  # 49f68a5c8493ec2c0bf489821c21fc3b
   在传入数据的时候 只要内容一致 那么算法的结果肯定一致
   md5 = hashlib.md5()
   # md5.update(b'oh')
   # md5.update(b'god')
   # md5.update(b'please')
   # print(md5.hexdigest()) # d53e81ea82c3399697cd6044a4ee56e4
   md5.update(b'ohgodplease')
   print(md5.hexdigest())  # d53e81ea82c3399697cd6044a4ee56e4

加密补充

1.加密只后的结果是无法直接反解的
d53e81ea82c3399697cd6044a4ee56e4
  #所谓的反解其实是暴力破解:反复的猜
"""
md5解密内部本质
提前想好很多可能是密码的组合
123 自己加密
321 自己加密
222 自己加密
{'密文1':123,'密文2':321}
"""
2.加盐处理
增加破解的难度
   import hashlib
   md5 = hashlib.md5()
   # 加盐处理(额外添加一些干扰项)
   md5.update('大傻吊'.encode('utf8'))
   md5.update(b'123')
   print(md5.hexdigest())  # 10f09f8e935c76939fc3c1ccc1d26be2
3.动态加盐
干扰动态变化
   可以是用户名的一部分 也可以当前时间...
   
"""
加密应用场景
1.密码加密如何比对
用户输入的还是明文但是到了程序里面之后会采用相同的加密算法变成密文
之后拿着密文与数据库里面的密文对比如果一致就是密码正确 不一致就是密码错误

2.文件内容一致性校验
作为软件的提供者 我们在提供安全软件的同时会对该软件内容做加密处理得到一个该安全软件独有的密文
用户在下载软件之后也会对内容做相同的加密之后比对两次密文是否一致
如果是表示中途没有被修改 如果不是表示中途被修改过 可能存在病毒
"""
针对大文件一致性校验的优化策略
如果一个文件有10G 那么如果全部读取并加密速度太慢
   这个是时候可以考虑对文件内容进行切片读取并加密的操作

logging模块

'''日志模块就是在程序的各个环境记录 便于后续的查看'''
1.日志等级
import logging
   #日志按照重要程度分为五个级别:默认只有达到warning警告级别及以上才会记录日志
 logging.debug('debug message')
 logging.info('info message')
 logging.warning('warning message')
 logging.error('error message')
 logging.critical('critical message')
2.基本使用
import logging
file_handler = logging.FileHandler(filename='x1.log',mode='a',encoding='utf8',)
logging.basicConfig(
   format='%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',
       datefmt= '%Y-%m-%d %H:%M:%S %p',
       handlers = [file_handler,],
       level= logging.ERROR
)

logging.error('hahaha')



 posted on   鳗鱼的春天  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示