第七课&C2T2
1 促进。反馈
2 List
2.1 for..in
2.1.1 从哪里取什么。。
2.2 生成器
2.3 迭代器
2.4 Pythonic
3 加密
4 卡
4.1 第一、二宇宙速度
4.2 突破-既是成长
4.3 钻研ing
4.4 提问
4.5 探寻
5 文档
5.1 内化
5.2 用自己的经历判定
5.2.1 分解步数
5.3 逼自己
5.3.1 完成任务
5.3.1.1 子问题
5.3.1.1.1 细化
6 AKA阿卡原理
6.1 ALL Know All
7 PS
7.1 核心目标:思维升级
7.2 跳级
7.2.1 知识点
7.3 加速MVP速度
7.3.1 本地模拟化
7.3.2 可用度的的升级
8 《Head First HTML与CSS、XHTML(中文版) 》
8.1 Subtopic
9 oauth
10 list and .join
10.1 http://blog.sina.com.cn/s/blog_7b6a07420101l6e0.html
加密
- 加密 演示链接
md5 + base64
# 在ipython中运行,一行一行执行 from hashlib import md5 a= "人生苦短,我用py" md5(a).hexdigest() from base64 import urlsafe_b64encode,urlsafe_b64decode
urlsafe_b64encode(a)
_safe = urlsafe_b64encode(a)
print urlsafe_b64decode(_safe) #win CMD 下输出会是乱码:浜虹敓鑻︾煭锛屾垜鐢╬y
#没关系,解码。。
print urlsafe_b64decode(_safe).decode('utf-8') #人生苦短,我用py
base64 就是可逆操作的编码,base64就是可逆操作的编码
大妈的例子核心代码:
#加密
def gen_sign(msg):
_base = "{}&{}".format(XCFG.APPKEY,msg.encode('utf8'))
#print _base
_safe = urlsafe_b64encode(_base)
#print _safe
_tag = "{}{}".format(_safe,XCFG.SECRET)
#print _tag
_sign = md5(_tag).hexdigest()
return _safe,_sign
def s_encr(msg):
#print XCFG.ROOT
_ts = "%.3f" % (time())
print _ts
_safe,_sign = gen_sign(msg)
#print _sign
_uri = urlsafe_b64encode("q={}&ts={}&sign={}".format(_safe,_ts,_sign))
#print _uri
return _uri
def s_decr(qcode):
#print qcode
_uri = urlsafe_b64decode(qcode)
#print _uri
q_dict = {}
for q in _uri.split('&'):
item = q.split('=')
q_dict[item[0]] = item[1]
_msg = urlsafe_b64decode(q_dict['q']).split('&')[1]
_safe,_sign = gen_sign(_msg.decode('utf8'))
#客户端解密:
_uri = s_encr(u'是也乎')
print s_decr(_uri)
r = requests.get("%s/encr/%s"%(XCFG.ROOT,_uri))
pp.pprint(r.json())
- 解密
感想
- 加密
- 单一的加密算法会被撞库
- 通过各种算法嵌套实现复杂加密
- 服务器端增加sleep函数避免恶意攻击
迭代
- MVP
- 快速迭代
- 迭代环境的搭建:先本地→上线验证
- 工具的使用:学会利用插件、模块
每次仇恨一个东西,你就失去了向它学习的机会。