无法创建 SymmetricKey
Unable to create SymmetricKey
首先我使用的Botan版本是Botan-1.10.9
我正在用 Visual C++
编写托管包装器
在这个例子之后,我尝试从字符串的哈希创建一个 SymmetricKey,这样我就可以将它传递给 FPE 模块的 fe1_encrypt 方法
fe1_encrypt 的签名是
BigInt FPE::fe1_encrypt(const BigInt &n, const BigInt &X, const SymmetricKey &key, const std::vector<byte> &tweak)
我希望我传递给密钥参数的值是明文的哈希值(不可能解密)所以我真的不关心它是一个 SymmetricKey,只需要那个类型因为方法需要它作为一个参数。
但是在他们的示例中,他们已经将 SymmetricKey 传递给了他们的散列方法,returns 和 std:vector
但是,没有采用这种类型的 SymmetricKey 的构造函数。
有人有什么想法吗?
编辑:我试过了,但没有成功
std::vector<byte> re = SHA_1(plaintextAsString);
Botan::OctetString key(re, re.size());
错误
错误 15 error C2664: 'Botan::OctetString::OctetString(Botan::RandomNumberGenerator &,size_t)' : 无法将参数 1 从 'std::vector<_Ty>' 转换为 'Botan::RandomNumberGenerator &'
在documentation中,SymmetricKey
(这只是OctetString
的typedef)可以采用字节数组和长度作为构造函数。或者,您可以将密钥编码为十六进制字符串。如果您已经有了 std::vector<byte>
的密钥,那么这就足够了:
std::vector<byte> keybytes;
// ...fill the vector...
SymmetricKey key( keybytes.data(), keybytes.size() );
Botan 的更高版本定义了另一个构造函数OctetString (const std::vector<byte> &in)
。
首先我使用的Botan版本是Botan-1.10.9 我正在用 Visual C++
编写托管包装器在这个例子之后,我尝试从字符串的哈希创建一个 SymmetricKey,这样我就可以将它传递给 FPE 模块的 fe1_encrypt 方法
fe1_encrypt 的签名是
BigInt FPE::fe1_encrypt(const BigInt &n, const BigInt &X, const SymmetricKey &key, const std::vector<byte> &tweak)
我希望我传递给密钥参数的值是明文的哈希值(不可能解密)所以我真的不关心它是一个 SymmetricKey,只需要那个类型因为方法需要它作为一个参数。
但是在他们的示例中,他们已经将 SymmetricKey 传递给了他们的散列方法,returns 和 std:vector
但是,没有采用这种类型的 SymmetricKey 的构造函数。
有人有什么想法吗?
编辑:我试过了,但没有成功
std::vector<byte> re = SHA_1(plaintextAsString);
Botan::OctetString key(re, re.size());
错误
错误 15 error C2664: 'Botan::OctetString::OctetString(Botan::RandomNumberGenerator &,size_t)' : 无法将参数 1 从 'std::vector<_Ty>' 转换为 'Botan::RandomNumberGenerator &'
在documentation中,SymmetricKey
(这只是OctetString
的typedef)可以采用字节数组和长度作为构造函数。或者,您可以将密钥编码为十六进制字符串。如果您已经有了 std::vector<byte>
的密钥,那么这就足够了:
std::vector<byte> keybytes;
// ...fill the vector...
SymmetricKey key( keybytes.data(), keybytes.size() );
Botan 的更高版本定义了另一个构造函数OctetString (const std::vector<byte> &in)
。