JZX 轻语

挖掘时光的细节

[Python 杂记] 在Linux上正确处理环境变量

开发环境 Ubuntu 22.04 Python 3.10 环境变量的读取 直接使用os.getenv方法即可正确读取。 import os os.getenv('TEST_ENV') 环境变量的写入 使用os.putenv方法可能不能将环境变量正确写入,为了避免上述情况,可以直接使用赋值的方法写入到os.environ中。 impo...

[密码学编程] 不安全字符串比较引发的计时攻击

以验证计时攻击(Verification Timing Attacks)为例

前言 在学习Dan Boneh教授的线上免费密码学MOOC时,Boneh提到了一个有趣的攻击——验证计时攻击(Verification Timing Attacks), 作为侧信道攻击的其中一种,验证计时攻击非常简单易懂,且十分常见,有时候程序员进行与密码学相关编程的时候很容易犯这个问题, 故记录下来警醒自己。 一句话概括该攻击,那就是:它是一种侧信道攻击,它利...

[椭圆曲线/可搜索加密] PBC C++ Wrapper/C++封装的PBC库用法简介

C++封装的PBC Library,可以简化代码和避免内存泄露

之前毕业设计的时候用到了PBC Library,在最后性能评估的时候使用Valgrind检测出了一堆的内存泄漏,原因大多是没有调用element_clear()代码释放元素。另一方面,C语言版本的PBC Library用起来其实比较繁琐,需要多次调用element_init_G1()之类的初始化代码,而且元素的运算也不直观(因为C语言不支持运算符重载),用起来很容易犯错误的。 在这个过程中...

[可搜索加密] PBC Library/PBC库的用法简介

椭圆曲线群上的配对运算库

毕业设计的时候编程用到了PBC库。现在毕业设计完成了答辩,对PBC库的用法做一个总结吧。 安装 安装PBC前需要先安装GMP库,可输入sudo apt-get install libgmp3-dev(Debian系,下同)命令安装。 还需要安装flex,bison,可输入sudo apt-get install flex, bison命令安装。 ...

[WSL] Windows 子系统 WSL使用系统代理

以Ubuntu + Clash为例

最近使用WSL发现无法访问github相关的网站,基本都是Connection Refused,即便Windows系统使用了Clash也不能访问,按照网上一些教程,需要在WSL上进行一些配置才能用到系统的代理。 下面的操作基于WSL下的Ubuntu 20.04 LTS,主机代理软件为Clash。 在Clash软件找到HTTP代理端口(即软件里面的Port),如下图的789...

[Python] Python-从装饰器(decorator)谈到闭包(closure)

为什么要在函数中返回一个函数?

该文章只是一篇对闭包和装饰器的简单介绍。 一开始看裘宗燕老师所写的《程序员学Python》这本书时,对闭包十分不理解,琢磨着为什么要在一个函数中返回一个函数呢?只能做个标记继续往后看,直到看到装饰器这一章时,细细思考其中原理方才发现闭包的重要性。 1. 什么是装饰器 装饰器(decorator),是Python语言的一个语法糖(Syntactic sugar)。 装饰器本质上是...

[Python 进阶] Python元类(Metaclass)入门和简单应用

元类,就是"类的类"

最近在阅读《Python Cookbook》,看到第九章的时候有些关于元编程的地方还是不太了解,特别是有关元类的那一部分,所以找了一下网上一些教程文档,弄通了元类后,自己再总结一下有关元类的一些基本知识以及常见的用法。 其实,元类并不难理解,只要我们走出类的思维框架,以更高的层次去看待类本身是如何构造出来的,就弄懂了元类的概念。进而使用元类去“干涉”类。 1. 从type说起 我们都清...

[Python 进阶] Python描述器的介绍及基于描述器协议的属性(property)、方法(method)简介

基于Python官方文档的翻译+个人注解

最近看了下《Python Cookbook》,对Python3的描述器部分还是不太了解,书里面也没有太详细的介绍,所以参考了下官方文档学习。 因为官方文档的翻译不太齐全,所以参考了一些博客的翻译加以改动,并加下自己的一些注解。 摘要 文章主要定义了描述符,概述描述符协议,并说明如何调用描述符。下文展示了一个自定义的描述器,以及几个Python内置的描述器,如属性(property), ...

Linux或WSL本地运行和调试基于Jekyll的Github Pages

以Windows 10 WSL(Ubuntu 16.04)为例

最近需要在WSL本地运行和调试Github Pages的网页,虽然之前在Linux系统也弄过,但一些细节已经忘了差不多,写这篇文章备忘一下。 前提环境 Linux系统或Windows 10的WSL; Ruby的安装 更新系统资源包 在终端中输入命令 sudo apt-get update 安装Ruby基本构建工具 在终端中输入命令 sudo apt-get install...

微博热搜数据收集及监控的实现

基于Django + Redis + Github Pages实现一个简单的查询助手页面

最近刚刚面完中大的预推免复试,发挥得并不理想,一天天战战兢兢之余得找点活干。打开微博热搜,依然是那几个宝藏男孩登上热搜,突然间想写个程序统计一下微博热搜的趋势、上榜时间之类的,就温习一下Python爬虫和Django之类的知识,开始着手在自己的Github IO上搭一个微博热搜数据收集及监控页面。 >立即体验< 目前的功能 支持每一分钟爬取微博热搜榜,并使用正...