You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Crypto++ 7生成Ed448 ECDSA密钥遇UnknownOID异常求助

解决Crypto++ 7中Ed448 ECDSA密钥生成的UnknownOID异常问题

我太懂你遇到的这个坑了——Crypto++ 7对Ed448这类Edwards曲线的处理逻辑和旧版本完全变了,咱们直接说解决方案:

问题根源

Crypto++ 7开始把Edwards曲线(包括Ed25519、Ed448)从通用的ECIES<ECP>框架里剥离出来,改用专门的类实现。你之前用的ASN1::curve448() OID,在ECP模板的上下文里已经不被识别,所以才会抛出UnknownOID的BER解码异常。

正确的代码实现

直接使用Crypto++ 7提供的Ed448专属密钥类来生成密钥对:

#include <cryptopp/ed25519.h>
#include <cryptopp/osrng.h>

int main() {
    CryptoPP::AutoSeededRandomPool rng;
    
    // 生成Ed448私钥
    CryptoPP::Ed448::PrivateKey privateKey;
    privateKey.GenerateRandomWithKeySize(rng, 448);
    
    // 从私钥导出公钥
    CryptoPP::Ed448::PublicKey publicKey;
    privateKey.MakePublicKey(publicKey);
    
    // 后续可以基于这对密钥进行Ed448签名/验证操作
    return 0;
}

编译注意事项

编译时记得链接Crypto++库,比如用GCC编译的命令:
g++ your_code.cpp -o ed448_demo -lcryptopp

内容的提问来源于stack exchange,提问作者Cyclic3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:22:47