crypto++ 可以同时使用 [Private]key 对象 [在多线程中]

can crypto++ use [Private]key object be used simultaneously [in multi threads]

假设我们有全局 CryptoPP::ECIES<CryptoPP::ECP>::PrivateKey mykey 初始化对象 ,并有 10 个线程 运行 CryptoPP::ECIES<CryptoPP::ECP>::Encryptor myencrypto(mykey) 用于通过从 mykey 对象

分配密钥来制作加密器对象

assigner以mykey为参考

我需要一个 Mutex 来确保一次只有一个线程使用 mykey 吗,或者多个线程可以同时从密钥对象分配 enryptor 而没有任何问题(如果是,是否有保证)

(请注意,线程只能同时从 mykey 分配 none 修改它(我的代码不知道 cryptoPP 分配器是否这样做))

在没有收到答复后,我从我的代码中选择了互斥锁并测试了几次 当多线程同时使用 PrivateKey 对象初始化多个加密器时

我在第 2910 行 intger.cpp(cryptoPP 库源文件)

处得到一个断言
CRYPTOPP_ASSERT(bcLen <= N);

测试了大约 10 次,然后进行相同的断言,再次放置互斥锁并且断言消失了(在发布时我在 ntdll.dll 得到 0xc000005(访问被拒绝),因为 HeapFree() 函数是被错误的参数调用