17839007125 发表于 2024-12-18 17:45:20

ed25519算法怎么写到火山

tx官方bot要用到这个算法,想问下怎么封装成火山视窗的类,研究了一下午没研究出来

以下代码来自ai
#include <iomanip>
#include <iostream>
#include <sodium.h>
#include <sstream>
#include <string>

class TX签名计算器 {
public:
    // 初始化类并生成密钥对
    bool 初始化(const std::string& 密钥) {
      if (sodium_init() < 0) return false;
      std::string 填充密钥 = 密钥;
      while (填充密钥.size() < 32) {
            填充密钥 = 填充密钥 + 密钥.substr(0, 32 - 填充密钥.size());
      }
      // 截取前32字节作为最终使用的密钥
      填充密钥 = 填充密钥.substr(0, 32);
      //std::string 填充密钥 = 密钥.substr(0, 32).append(32 - 密钥.size(), 密钥);
      crypto_sign_seed_keypair(公钥, 私钥, reinterpret_cast<const unsigned char*>(填充密钥.data()));
      return true;
    }

    // 计算消息的签名并返回十六进制格式
    std::string 计算签名(const std::string& 消息) {
      unsigned char 签名;
      crypto_sign_detached(签名, nullptr, reinterpret_cast<const unsigned char*>(消息.c_str()), 消息.length(), 私钥);
      return 转为十六进制(签名, crypto_sign_BYTES);
    }

private:
    // 将字节数组转换为十六进制字符串
    std::string 转为十六进制(const unsigned char* 数据, size_t 长度) {
      std::ostringstream oss;
      for (size_t i = 0; i < 长度; ++i) oss << std::hex << std::setw(2) << std::setfill('0') << (int)数据;
      return oss.str();
    }

    unsigned char 私钥; // 私钥
    unsigned char 公钥;// 公钥
};

17839007125 发表于 2024-12-19 11:37:33

已经自行解决了哈:D虽然你们没做什么,但也是辛苦你们了:handshake

17839007125 发表于 2024-12-18 17:47:02

那个表情是: o

火绒 发表于 2024-12-18 22:45:56

回复本帖可获得 1 金钱奖励! 每人限 1 次

1325901607 发表于 2024-12-18 23:44:05

https://bbs.voldp.com/static/image/smiley/grapeman/06.gif

suyan 发表于 2024-12-19 00:00:24

这是发福利的吗

dengzf 发表于 2024-12-19 08:30:07

我也来试下赚金钱

dengzf 发表于 2024-12-19 08:31:08

导入这个文件,用嵌入封装下调用完事

17839007125 发表于 2024-12-19 08:57:32

dengzf 发表于 2024-12-19 08:31
导入这个文件,用嵌入封装下调用完事

可以帮忙弄下吗?

Morning 发表于 2024-12-19 12:00:53

:噜阿噜
页: [1]
查看完整版本: ed25519算法怎么写到火山