| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| __启动窗口_创建完毕 | |||||
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 测试ED25519 | |||||
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| 公钥 | 字节集 | |||||
| 私钥 | 字节集 | |||||
| 消息 | 字节集 | |||||
| 签名 | 字节集 | |||||
| 验签结果 | 逻辑型 | |||||
如果真 (初始化加密库 () = 假)
信息框 (“加密库初始化失败,请检查libsodium.dll是否存在”, 0, “错误”, )
返回 ()
如果真 (生成密钥对 (公钥, 私钥) = 假)
信息框 (“密钥对生成失败”, 0, “错误”, )
返回 ()
如果真 (取字节集长度 (签名) = 0)
信息框 (“签名失败”, 0, “错误”, )
返回 ()
如果 (验签结果)
信息框 (“签名验证通过!”, 0, “成功”, )
信息框 (“签名验证失败!”, 0, “失败”, )
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||
| 初始化加密库 | 逻辑型 | 程序启动时调用1次,返回是否初始化成功 | |||
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| ret | 整数型 | |||||
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||||
| 生成密钥对 | 逻辑型 | 随机生成ED25519公钥+私钥 | |||||
| 参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
| 公钥 | 字节集 | 输出32字节公钥 | 私钥 | 字节集 | 输出64字节私钥 | ||
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| ret | 整数型 | |||||
| 子程序名 | 返回值类型 | 公开 | 备 注 | ||||
| 种子导入密钥对 | 逻辑型 | 通过32字节种子私钥还原完整密钥对 | |||||
| 参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
| 种子私钥 | 字节集 | 32字节种子 | 公钥 | 字节集 | 输出32字节公钥 | 完整私钥 | 字节集 | 输出64字节完整私钥 |
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| ret | 整数型 | |||||
如果真 (取字节集长度 (种子私钥) ≠ 32)
返回 (假)| 子程序名 | 返回值类型 | 公开 | 备 注 | ||||
| 消息签名 | 字节集 | 对消息生成ED25519签名,返回64字节签名,失败返回空 | |||||
| 参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
| 待签名消息 | 字节集 | 原始消息数据 | 私钥 | 字节集 | 64字节ED25519私钥 | ||
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
| sig | 字节集 | |||||
| siglen | 长整数型 | |||||
| ret | 整数型 | |||||
如果真 (取字节集长度 (私钥) ≠ 64)
返回 ({ })
如果真 (ret ≠ 0)
返回 ({ })| 子程序名 | 返回值类型 | 公开 | 备 注 | ||||
| 签名验证 | 逻辑型 | 验证ED25519签名,返回是否通过 | |||||
| 参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
| 原始消息 | 字节集 | 原始消息数据 | 签名数据 | 字节集 | 64字节签名 | 公钥 | 字节集 | 32字节ED25519公钥 |
如果真 (取字节集长度 (签名数据) ≠ 64 或 取字节集长度 (公钥) ≠ 32)
返回 (假)| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| sodium_init | 整数型 | 初始化libsodium库,全局调用1次即可;成功返回1,已初始化返回0,失败返回-1 | ||
| DLL库文件名: | ||||
| libsodium.dll | ||||
| 在DLL库中对应命令名: | ||||
| @sodium_init | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 |
| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| crypto_sign_keypair | 整数型 | 随机生成ED25519密钥对;成功返回0 | ||
| DLL库文件名: | ||||
| libsodium.dll | ||||
| 在DLL库中对应命令名: | ||||
| @crypto_sign_keypair | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 |
| pk | 字节集 | 输出公钥,需预分配32字节空间 | ||
| sk | 字节集 | 输出私钥,需预分配64字节空间 | ||
| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| crypto_sign_seed_keypair | 整数型 | 通过32字节种子生成密钥对;成功返回0 | ||
| DLL库文件名: | ||||
| libsodium.dll | ||||
| 在DLL库中对应命令名: | ||||
| @crypto_sign_seed_keypair | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 |
| pk | 字节集 | 输出公钥32字节 | ||
| sk | 字节集 | 输出私钥64字节 | ||
| seed | 字节集 | 32字节种子私钥 | ||
| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| crypto_sign_detached | 整数型 | 生成分离式签名;成功返回0 | ||
| DLL库文件名: | ||||
| libsodium.dll | ||||
| 在DLL库中对应命令名: | ||||
| @crypto_sign_detached | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 |
| sig | 字节集 | 输出签名,需预分配64字节空间 | ||
| siglen_p | 整数型 | 输出实际签名长度 | ||
| m | 字节集 | 待签名原始消息 | ||
| mlen | 长整数型 | 消息字节长度 | ||
| sk | 字节集 | 64字节ED25519私钥 | ||
| DLL命令名 | 返回值类型 | 公开 | 备 注 | |
| crypto_sign_verify_detached | 整数型 | 验证分离式签名;成功返回0,失败返回-1 | ||
| DLL库文件名: | ||||
| libsodium.dll | ||||
| 在DLL库中对应命令名: | ||||
| @crypto_sign_verify_detached | ||||
| 参数名 | 类 型 | 传址 | 数组 | 备 注 |
| sig | 字节集 | 64字节签名数据 | ||
| m | 字节集 | 原始消息数据 | ||
| mlen | 长整数型 | 消息字节长度 | ||
| pk | 字节集 | 32字节ED25519公钥 | ||
bianyuan456 发表于 2026-6-23 03:11
在测试ED25519()的最后,在注释' 5. 验签
上面少了以下这一句关键代码!
1.0.22 完全可以正常使用,之前推荐 1.0.21 是出于「稳定优先+功能无差异」的考量,对你只用到 ED25519 签名的场景来说,两者没有本质区别。下面详细说明原因:
libsodium 采用两套版本并行的发布体系,这是很多人容易混淆的点:
目前的现状是:
-stable 分支,经过了更久的大规模验证,bug 和兼容性问题最少。-stable 维护版,属于「功能先行版」。ED25519(crypto_sign_* 系列)是 libsodium 最核心的基础密码学组件,从 1.0.19 版本之后就没有过逻辑改动和 API 变更:
libsodium-1.0.21-stable-msvc.zip 是最优选择,稳定且维护周期更长。libsodium-1.0.22-msvc.zip 完全没问题,替换 DLL 即可,所有调用代码都不用修改。webmaster999 发表于 2026-6-23 08:16
生成密钥对 (公钥, 私钥) 为何公钥, 私钥为空?
易造轮 发表于 2026-6-23 09:35
你看备注,生成随机的
易造轮 发表于 2026-6-23 04:46
编辑多次搞漏了,
| 欢迎光临 精易论坛 (https://bbs.ijingyi.com/) | Powered by Discuz! X3.4 |