忆向Blog

忆者:回忆者也,
向者:往昔者也,
忆向者:缅怀往昔铭心岁月也,
所有回不去的良辰美景,都是举世无双的好时光,
遂,我的博客取名为“忆向BLOG”!

最新推荐

C++模块     

深入剖析TB64avx2库原理

base64编码,即将一段二进制中,每6bits用一个字符表示,以将二进制转换成易读易传输的字符串。6bits正好对应64个字符,故为base64。

TB64avx2库,或者叫Turbo64avx2库,在github很容易找到,是借助于intel avx2指令集,实现base64的编码和解码,速度非常快,查表法通常已经是优化极限了,而使用SIMD指令的实现比查表法还要快8倍。

当前该库不支持url safe的base64编码和解码,故而『被迫』剖析其源码,以实现url safe的支持。

小注:何为url safe编码?标准base64使用的字符集为:... ...

 阅读全文»
Python模块     

Python里的base64编码

base64编码,非常简单的东西,但是感觉在python里有点混乱,这里罗列一下:

1. binascii.b2a_base64()和binascii.a2b_base64()

后面的一些库函数都是基于binascii的,binascii是一个C语言实现的内置库。binascii提供了很多编码算法,以b2a_和a2b_打头。b2a_是编码,a2b_是解码,猜测是binary to ascii-string的缩写吧。

特点:非url safe,即有/和+字符,而且末尾还有一个多余的\n... ...

 阅读全文»
Ubuntu模块     

ubuntu上的软件更新

Ubuntu上软件管理以前是用apt-get,现在改成apt了。我们时常需要做的一个事情是:查询当前有哪些软件可更新,以及更新指定的软件。

容易混淆的是:... ...

 阅读全文»
杂文模块     

为什么server返回json时必须是object,不能是array

在进行api请求时,返回的json,必须是object,而不能是array,这在很多框架里都被限定死了,当然通常你也可以自己json.encode(),然后返回一个字符串,来绕过框架的保护。那为什么api返回的结果一定要是对象,而不能是数组呢?

网上很容易找到《JSON Hijacking》,这里记录一下原理。

基于两点理由:

1. 以[]包起来的数组格式合乎js语法,能够被正确执行,而以{}包起来的对象,则不能被正确执行。

于是我们就可以伪造一个网站,然后将要攻击的目标网站的api请求作为js文件来引用:... ...

 阅读全文»

回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo