本帖最后由 易造轮 于 2026-6-23 00:34 编辑
易语言原生无 ED25519 加密能力,工业界最稳妥的方案是封装成熟开源库 libsodium 的 DLL。libsodium 是密码学领域的标准实现,安全性、性能和跨语言兼容性都有保障,远优于纯易语言手写的椭圆曲线实现(纯易语言实现大数运算效率极低、安全性无法验证,不推荐生产环境使用)。
下载对应位数的 libsodium.dll:
官方下载地址:https://download.libsodium.org/libsodium/releases/
下载 Win32 版本:libsodium-1.0.21-stable-msvc.zip
将 libsodium.dll 放到你的易语言程序同级目录,或系统 System32/SysWOW64 目录。
测试ED25519 ()| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 公钥 | 字节集 | | | | 私钥 | 字节集 | | | | 消息 | 字节集 | | | | 签名 | 字节集 | | | | 验签结果 | 逻辑型 | | | 如果真 (初始化加密库 () = 假) 信息框 (“加密库初始化失败,请检查libsodium.dll是否存在”, 0, “错误”, ) 返回 () 如果真 (生成密钥对 (公钥, 私钥 ) = 假) 信息框 (“密钥对生成失败”, 0, “错误”, ) 返回 () 消息 = 到字节集 (“Hello, ED25519 with 易语言!”) 签名 = 消息签名 (消息, 私钥 ) 如果真 (取字节集长度 (签名 ) = 0 ) 信息框 (“签名失败”, 0, “错误”, ) 返回 () 如果 (验签结果 ) 信息框 (“签名验证通过!”, 0, “成功”, ) 信息框 (“签名验证失败!”, 0, “失败”, ) ret = sodium_init ()返回 (ret ≠ -1 ) 公钥 = 取空白字节集 (32 )私钥 = 取空白字节集 (64 )ret = crypto_sign_keypair (公钥, 私钥 )返回 (ret = 0 )|
| 种子导入密钥对 | 逻辑型 | | |
| 种子私钥 | 字节集 | | | | 公钥 | 字节集 | | | | 完整私钥 | 字节集 | | | |
如果真 (取字节集长度 (种子私钥 ) ≠ 32 ) 返回 (假)公钥 = 取空白字节集 (32)完整私钥 = 取空白字节集 (64 )ret = crypto_sign_seed_keypair (公钥, 完整私钥, 种子私钥 )返回 (ret = 0 )| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | sig | 字节集 | | | | siglen | 长整数型 | | | | ret | 整数型 | | |
如果真 (取字节集长度 (私钥 ) ≠ 64 ) 返回 ({ })sig = 取空白字节集 (64)siglen = 64 ret = crypto_sign_detached (sig, siglen, 待签名消息, 取字节集长度 (待签名消息 ), 私钥 ) 如果真 (ret ≠ 0 ) 返回 ({ })返回 (sig)|
| 签名验证 | 逻辑型 | | |
| 原始消息 | 字节集 | | | | 签名数据 | 字节集 | | | | 公钥 | 字节集 | | | |
如果真 (取字节集长度 (签名数据 ) ≠ 64 或 取字节集长度 (公钥 ) ≠ 32 ) 返回 (假)返回 (crypto_sign_verify_detached (签名数据, 原始消息, 取字节集长度 (原始消息), 公钥) = 0)|
| sodium_init | 整数型 | | |
| libsodium.dll | |
| @sodium_init | |
|
| crypto_sign_keypair | 整数型 | | |
| libsodium.dll | |
| @crypto_sign_keypair | |
| pk | 字节集 | | | | sk | 字节集 | | |
|
| crypto_sign_seed_keypair | 整数型 | | |
| libsodium.dll | |
| @crypto_sign_seed_keypair | |
| pk | 字节集 | | | | sk | 字节集 | | | | seed | 字节集 | | |
|
| crypto_sign_detached | 整数型 | | |
| libsodium.dll | |
| @crypto_sign_detached | |
| sig | 字节集 | | | | siglen_p | 整数型 | | | | m | 字节集 | | | | mlen | 长整数型 | | | | sk | 字节集 | | |
|
| crypto_sign_verify_detached | 整数型 | | |
| libsodium.dll | |
| @crypto_sign_verify_detached | |
| sig | 字节集 | | | | m | 字节集 | | | | mlen | 长整数型 | | | | pk | 字节集 | | |
|