- 博客(64)
- 收藏
- 关注
原创 gmssl私钥文件格式
外层为pem,内层为pkcs#8的EncryptedPrivateKeyInfo,encryptionAlgorithm的OID为pkcs5PBES2,所以还套了一层pkcs#5。openssl也支持这种格式,但是不是默认格式,你需要使用“openssl pkcs8”命令才能将私钥存储为pkcs#8格式。
2025-08-08 15:41:20
323
原创 OID顶层节点取值
OID(对象标识符)是由ISO和ITU共同维护的全球唯一标识系统,采用分层树状结构,用点分十进制表示(如1.2.156.10197.1)。前两层有特定含义:第一层0/1/2分别对应ITU、ISO及联合维护,第二层不超过40,第三层后由各国自行分配。中国对应1.2.156。OID主要用于ASN.1编码,需遵循其规范。具体数值可参考OpenSSL的obj_dat.h文件定义。
2025-07-03 17:11:28
323
原创 升级openssl后无法使用cmake和curl的解决方法
摘要:升级OpenSSL后出现curl无法使用的问题,原因是新版默认禁用SSLv3。解决方案是重新编译OpenSSL时启用SSLv3支持,通过添加enable-ssl3和enable-ssl3-method参数。虽然理论上可升级curl并禁用SSLv3来解决,但该方法未验证。需要注意SSLv3因安全问题正被逐步淘汰,保留支持仅用于旧版软件兼容。
2025-06-13 16:23:42
414
原创 C++开源库argh使用教程
argh是一个轻量级的C++命令行参数解析库,仅需包含一个头文件即可使用。它通过创建argh::parser对象并调用parse方法来解析命令行参数。
2025-05-19 16:57:26
523
原创 linux C 信号量超时返回
设置超时时间,当信号量等待时间过长时返回错误码,而非一直阻塞。效果类似于windows的WaitForSingleObject。
2024-10-31 10:47:14
481
1
原创 哈希签名溯源--Lamport40签名算法
Leslie Lamport的Constructing digital signatures from a one way function. Technical Report SRI-CSL-98, SRI International Computer Science Laboratory (1979)是我追溯到的最早的哈希签名算法,现在很多文献都会引用它。这个文献现在已经公开可以免费下载。本文将会详细介绍其第2章所述的算法并翻译部分内容,但不会给出代码。
2024-09-09 10:31:19
572
原创 android交叉编译报错no input files的解决方法
安装NDK后,make报错"clang-18: error: no input files",即使直接使用clang命令(例如clang -c test.c)仍然报错。
2024-08-28 14:56:48
990
原创 python gmssl SM4不填充加解密
使用gmssl(python版本)进行SM4加/解密时结果与国标(GMT0002)不符,或解密失败,原因是gmssl默认使用PKCS7填充,国标文档里的样例是没有填充的。
2024-05-01 10:39:41
1475
4
原创 GMSSL学习笔记
GmSSL是由北京大学自主开发的国产商用密码开源库,实现了大部分常用的国密算法(SM2、SM3、SM4等)以及TLCP协议,使用方法类似openssl。GmSSL是一个轻量级软件,使用起来也比openssl方便一些。
2024-04-07 17:13:40
1009
原创 python ctypes.pointer和ctypes.POINTER的区别
ctypes.pointer将一个已实例化的对象转换为指针,该对象的类型必须是形如ctypes内部类型,例如ctypes.c_int或ctypes.Structure。ctypes.POINTER将一个ctypes内部类型转换为对应的指针类型,不会创建该类型的对象。ctypes.POINTER通常在设置argtypes时用于生成所需类型。ctypes.pointer通常在调用时用于生成所需指针。ctypes.pointer(a)相当于C的&a。ctypes.POINTER(A)相当于C的A*。
2024-01-26 15:59:26
1345
原创 git克隆失败提示RPC failed的解决方法
关键字:git, error, RPC failed, curl 18 transfer closed with outstanding read data remaininggit pull也会遇到同样的错误,解决方法相同。
2024-01-05 13:43:37
6861
2
原创 GreatDB源码分析之表空间加密
GreatDB(或mysql)服务端支持对表内数据进行加密存储,称之为表空间(table space)加密。
2023-12-28 15:58:47
1170
原创 redis-plus-plus访问REDIS集群
初始化需要输入任意一个结点的IP和端口,如果设置了密码,还需要密码的明文并使用ConnectionOptions类。开源库:redis-plus-plus。初始化完成后可以直接进行读/写操作。接口类:RedisCluster。
2023-11-02 15:52:28
1049
原创 无openssl编译libwebsockets源码(关闭SSL)
编译源码,生成不依赖openssl的libwebsockets动态库(dll)
2023-07-11 16:02:21
2259
原创 C++罕见的纯虚函数调用异常(_purecall abort)
1、析构函数的执行过程中,虚函数表会发生变化,使得虚函数的表现与一般情况不同。2、子类的析构函数返回后,所有子类实现的虚函数在虚函数表中的指针都会替换为父类的对应方法(相当于子类重写父类方法的过程反过来),然后才会执行父类的析构函数。3、如果在析构函数中直接调用纯虚函数,则会引发链接错误,这算是编译器帮我们处理了最简单的情况。但间接调用纯虚函数的复杂情况编译器无法识别。4、父类的构造函数也有类似的现象,在执行期间,虚函数表中的指针都是父类的,纯虚函数则是_purecall。
2023-07-06 15:14:02
1286
原创 cmake make不打印详细信息的解决方法
cmake生成Makefile,make时不打印详细信息。Makefile中有MAKESILENT变量。
2023-03-29 14:39:19
1308
原创 Tk.event_generate失效的解决方法(python tkinter)
使用event_generate发送自定义消息,无报错,但Tk窗体无法接收到消息。
2023-02-22 17:06:23
702
原创 python装饰器实例@FixWd
本文实现了一个简单的装饰器,可用于固定工作目录。不说废话直接上代码import osimport subprocessimport sysdef FixWd(f):#固定工作目录的装饰器 def ret(*args, **kwargs): strPwd = os.getcwd() r=f(*args, **kwargs) os.chdir(strPwd) return r return ret@FixWd
2022-04-28 20:13:14
780
原创 双网卡电脑的Internet连接共享
需求概述有一台双网卡的电脑A(为简便起见,假设是2个以太网口。多于2个网卡,以及有无线网卡的情况下,解决方案雷同),2个网卡分别称为eth0和eth1。eth0可以访问Internet,eth1连接(网线直连)另一台电脑B(笔者的实际案例是一个嵌入式设备。还是为了叙述简便,假设是一个普通电脑,并且电脑B除了一个以太网口外没有其它上网手段)。目标:使2台电脑都能访问Internet。操作系统:ubuntu20。windows下的操作可参考:https://jingyan.baidu.com/a
2022-01-04 20:34:20
19642
4
原创 ubuntu20无法安装python-dev的解决方法
现象使用apt安装python-dev时报错,更换软件源无法解决。首先确定python版本(大版本号,我的是3),然后使用python3-dev代替python-dev。仍然报错:(关键字:Depends,Unable to correct problems, you have held broken packages)问题原因依赖软件包的版本不匹配。也有可能是依赖软件包的依赖软件包的问题。一般不做手动排查。解决方法安装aptitudesudo apt instal
2021-12-28 11:41:35
13519
1
原创 python踩坑记录
个人踩坑记录合集解决方法:卸载python3.9,换成python3.7,重新设置环境变量,(使用pip)重新安装dnspython。效果:可正常使用dns.asyncresolver.Resolver。原因:不明...
2021-09-06 10:57:33
459
原创 CHIA源代码分析之chiavdf
概述chiavdf是chia.net开发的一个开源软件库,用于chia区块链(XCH币)。chiavdf是chia区块链的关键模块之一,功能是提供VDF接口函数,进而限制区块产生的速度。本文分析了chiavdf的软件需求和主要代码,翻译了部分英文文献,并总结了文献中的概念与代码元素(函数、变量等)的对应关系。本文使用1.0.2版本的代码,代码来源是github:https://github.com/Chia-Network/chiavdf本文首发于csdn.net,转载请注明。本文的原创
2021-08-27 22:28:20
6323
原创 以太坊DAPP开发之HDWalletProvider
HDWalletProvider类封装在truffle-hdwallet-provider软件包中,提供类似以太坊钱包的功能,可以管理密钥。本文介绍两种基本用法,均使用js编程,在truffle的配置文件中调用。1、使用助记词。2、使用密钥。代码放一起了∩ˍ∩var HDWalletProvider = require("truffle-hdwallet-provider");var g_mnemonic = "one two three four five six seven eight
2021-08-15 12:46:07
11286
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅