2020.1.16 sec集训总结

sec集训总结 Day6

学习内容

  • python的深入了解
  • base64 编码原理以及隐写

详情

python

异常处理:异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。 当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
捕捉异常可以使用try/except语句。 try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。 try/except语法。
在这里插入图片描述
try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码。

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

触发异常
我们可以使用raise语句自己触发异常
raise语法格式如下:

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

base64隐写

base64编码原理:

  1. 字符对应ASCII转换成八位二进制( base64的基础单位是
    38bit的二进制,若是不够38bit则在后面添加0字节(padding)直至满足)(例如:字符A–>八位二进制01000001不够38即不够24位后面补0直到满足38即 01000001 00000000 00000000)

  2. 38bit的二进制转换成46bit的二进制(0100000100000000 00000000–>010000 010000000000 000000)

  3. 4*6bit的二进制转换成十进制(010000 010000 000000 000000–>16 16 0 0)(注意后面的两个0在下一步不会变成base64对照表里的A而是你自己加上去的要变成等号(=))

  4. 对照base64表把十进制转换成字符(16 16 0 0–>Q Q = = )

解码原理

  1. 检查base64编码后面有几个等于号
  2. 把字符串按照base64表转换成4*6的倍数位数二进制
  3. 删除等于号的个数*8的bit
  4. 按照8个bit一组转成字符
    在这里插入图片描述如图,那么我们就可以在加粗的0的位子用二进制隐写(改成其他的二进制数)。这样子做,不影响原文的还原(因为解码的时候加粗位置被改的数是要被删除的),唯一的区别就是,上图的QQ==中第二个Q会变化,QkM=的M会变化,所以base64可以用于隐写

总结

有关base64的题碰到过多次都没怎么在意它的原理。今天这算是首次接触密码学,感觉还可以,发明这个编码的真是人才。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值