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编码原理:
-
字符对应ASCII转换成八位二进制( base64的基础单位是
38bit的二进制,若是不够38bit则在后面添加0字节(padding)直至满足)(例如:字符A–>八位二进制01000001不够38即不够24位后面补0直到满足38即 01000001 00000000 00000000) -
38bit的二进制转换成46bit的二进制(0100000100000000 00000000–>010000 010000000000 000000)
-
4*6bit的二进制转换成十进制(010000 010000 000000 000000–>16 16 0 0)(注意后面的两个0在下一步不会变成base64对照表里的A而是你自己加上去的要变成等号(=))
-
对照base64表把十进制转换成字符(16 16 0 0–>Q Q = = )
解码原理
- 检查base64编码后面有几个等于号
- 把字符串按照base64表转换成4*6的倍数位数二进制
- 删除等于号的个数*8的bit
- 按照8个bit一组转成字符
如图,那么我们就可以在加粗的0的位子用二进制隐写(改成其他的二进制数)。这样子做,不影响原文的还原(因为解码的时候加粗位置被改的数是要被删除的),唯一的区别就是,上图的QQ==中第二个Q会变化,QkM=的M会变化,所以base64可以用于隐写
总结
有关base64的题碰到过多次都没怎么在意它的原理。今天这算是首次接触密码学,感觉还可以,发明这个编码的真是人才。