gpt4 book ai didi

c++ - 将 Integer 转换回 SecByteBlock?

转载 作者:搜寻专家 更新时间:2023-10-31 02:23:18 24 4
gpt4 key购买 nike

我正在使用 Crypto++ 库:

DH dh;
AutoSeededRandomPool rnd;
SecByteBlock priv(dh.PrivateKeyLength());
SecByteBlock pub(dh.PublicKeyLength());

这会使用 diffie-hellman 生成私钥和公钥:

dh.GenerateKeyPair(rnd, priv, pub);

这里我将不可读的私钥和公钥转换为Integer (num e.g. 123)

// SecByteBlock -convert-> Integer
Integer a, b;
a.Decode(priv.BytePtr(), priv.SizeInBytes());
b.Decode(pub.BytePtr(), pub.SizeInBytes());

Integer 转换回 SecByteBlock 的代码是什么?

Integer -convert-> SecByteBlock

最佳答案

要从 Integer 中提取字节,您可以使用 MinEncodedSizeEncode 方法 ( see the Crypto++ documentation )。请注意,编码是大端。

下面是一个示例方法来包装它(假设 Integer 是无符号的,在这种情况下适用):

void UnsignedIntegerToByteBlock(const Integer& x, SecByteBlock& bytes)
{
size_t encodedSize = x.MinEncodedSize(Integer::UNSIGNED);
bytes.resize(encodedSize);
x.Encode(bytes.BytePtr(), encodedSize, Integer::UNSIGNED);
}

你可以这样使用它:

Integer a;
// ...
SecByteBlock bbA;
UnsignedIntegerToByteBlock(a, bbA);

关于c++ - 将 Integer 转换回 SecByteBlock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com