密码学考古:伪随机数算法dual_ec_prng的后门

dual_ec_prng 是基于椭圆曲线上的运算,由 NSA 提出,曾作为标准的伪随机数发生器。后被指出随机数序列有一定偏好;后被指出可能存在后门,攻击者可以根据当前随机数预测将来的随机数;再后来被明确废弃。本文从数学原理上仔细分析该伪随机数算法存在的缺陷,使用代码复现攻击的情景,非原创,是将数学论文里描述的内容展示出来。

继续阅读“密码学考古:伪随机数算法dual_ec_prng的后门”

用python下载指定的maven依赖库(主要是针对华为SDK)

华为的移动开发 SDK 是不提供下载地址的,只提供 maven url 和 artifact,最傻逼的是,他家的 maven 仓库不提供浏览功能,但是可以盲猜猜对路径,然后下载回来。也就是说只让 maven/gradle 替你下载,想看内容的话要到缓存里翻垃圾堆,不知道华为开放平台是什么脑子,于是造了个轮子来下载他家的 SDK。

继续阅读“用python下载指定的maven依赖库(主要是针对华为SDK)”

windows vmware workstation server 配置时的一些坑

我房间是有公网IP的,之前从办公室访问房间里的虚拟机,是先用rdp,然后再开启vmware的,虽然用起来没什么问题,但觉得不够优雅。而vmware的控制台本身是提供server-client直接通信的功能的,可以不借助rdp直接通信,配置时遇到一些坑,稍微记录一下。

继续阅读“windows vmware workstation server 配置时的一些坑”

strtok 的一个可能被忽略的细节

最近帮他们查了一下线上出现了一个神奇的 bug,先加载A库再加载 B 库 和 先加载 B 库再加载 A 库,会有不一致的行为,看起来不一致的行为是环境变量引起的,仔细排查了发现是strtok引起的,运行时会偷偷抹掉原本的字符串,稍微科普一下。

继续阅读“strtok 的一个可能被忽略的细节”

CMake多模块的构建方式

前些天用 C 和 CPP 写了一个较为大型的项目(可能也没有那么大型),其中模块间有相互依赖关系,配环境时候卡了很久,主要是对 CMake 的多模块不熟悉,查资料、抄 llvm、瞎测搞出了一些规律,本文不保证很准确,选择性地阅读。

本文不保证很准确,请选择性地阅读。

继续阅读“CMake多模块的构建方式”