小编hud*_*dac的帖子

加密/解密在两个不同的openssl版本之间不能很好地工作

我已经下载并编译了openssl-1.1.0.

我可以加密,并使用相同的exe解密openssl(如这里)

me@ubuntu:~/openssl-1.1.0$ LD_LIBRARY_PATH=. ./apps/openssl aes-256-cbc -a -salt -in file.txt -out file.txt.enc
enter aes-256-cbc encryption password: 123
Verifying - enter aes-256-cbc encryption password:
me@ubuntu:~/openssl-1.1.0$ LD_LIBRARY_PATH=. apps/openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec
enter aes-256-cbc decryption password: 123
Run Code Online (Sandbox Code Playgroud)

openssl用于:libcrypto.so.1.1, libssl.so.1.1

当我尝试openssl使用我的ubuntu上安装的解密时,它使用: /lib/x86_64-linux-gnu/libssl.so.1.0.0, /lib/x86_64-linux-gnu/libcrypto.so.1.0.0

我收到一个错误:

me@ubuntu:~/openssl-1.1.0$ openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec2
enter aes-256-cbc decryption password: 123
bad decrypt
140456117421728:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:
Run Code Online (Sandbox Code Playgroud)

可能是什么原因导致的 谢谢

linux encryption openssl cryptography libssl

30
推荐指数
1
解决办法
1万
查看次数

在测试用例中获取BOOST TEST测试套件名称

我正在使用BOOST TEST,我想知道是否有办法test suite从里面找出test case.我知道我可以test case通过以下方式找到姓名:

boost::unit_test::framework::current_test_case().p_name

有没有办法找出套件名称呢?

我的套房 - 案例结构是:

suite ---> case 1

______|--> case 2

______|--> case 3

谢谢

c++ boost unit-testing boost-test

8
推荐指数
1
解决办法
1283
查看次数

安全取消提升asio截止时间计时器

我想boost::asio::basic_waitable_timer<std::chrono::steady_clock>安全取消.

根据这个答案,这段代码应该做的工作:

timer.get_io_service().post([&]{timer.cancel();})
Run Code Online (Sandbox Code Playgroud)

我担心这对我不起作用.
难道我做错了什么?
这是我的代码:

#include <iostream>
#include "boost/asio.hpp"
#include <chrono>
#include <thread>
#include <random>

boost::asio::io_service io_service;
boost::asio::basic_waitable_timer<std::chrono::steady_clock> timer(io_service);
std::atomic<bool> started;

void handle_timeout(const boost::system::error_code& ec)
{
    if (!ec) {
        started = true;
        std::cerr << "tid: " << std::this_thread::get_id() << ", handle_timeout\n";
        timer.expires_from_now(std::chrono::milliseconds(10));
        timer.async_wait(&handle_timeout);
    } else if (ec == boost::asio::error::operation_aborted) {
        std::cerr << "tid: " << std::this_thread::get_id() << ", handle_timeout aborted\n";
    } else {
        std::cerr << "tid: " << std::this_thread::get_id() << ", handle_timeout another error\n";
    } …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading boost timer boost-asio

8
推荐指数
1
解决办法
5230
查看次数

如何在GnuPlot中向箭头添加文本

是否可以在gnuplot中向箭头添加文本?

让我们说我画一个箭头:

set arrow from 0,0 to 1,1 head
plot(x)
Run Code Online (Sandbox Code Playgroud)

是否可以将此箭头附加一些文字?

谢谢

gnuplot octave

7
推荐指数
1
解决办法
2万
查看次数

是否有BOOST池固定大小的分配器?

我想创建unordered_map(因为我特别想要一个哈希映射).我想在开头分配它的最大尺寸(根据我的约束).
所以,如果我想分配256个条目,每个条目的大小是1B(只是一个例子.假设1Byte包括Key和Value).然后我的unordered_map键+条目的总大小是256B.我想在分配器中预先分配256B.
然后,当unordered_map将调用allocate()/时deallocate(),allocator将从已分配的内存中给它1B.

typedef boost::unordered::unordered_map<int, MyClass, boost::hash<int>, std::equal_to<MyClass>, ??? > > myMap

它是否存在于BOOST中?或者别的地方?

----编辑----

正如我所看到的(感谢此处的答案) - 我的问题有两个解决方案:

  1. 实现一个allocator,持有一个boost::pool<>.这pool是在allocator构造函数中构建的.当allocate()被调用时unordered_map,它实际上调用pool.malloc(),并且当deallocate()调用unordered_map它时,它实际调用pool.free().

  2. 使用已经实现的allocator,pool_allocator如下所示:

typedef pool_allocator<std::pair<MyKey, MyClass>, boost::default_user_allocator_new_delete, boost::mutex, 1024 >) MyAllocator;
typedef unordered_map<MyKey, MyClass, hash, eq, MyAllocator> MyUnorderedMap;

秒选项对我来说仍然不清楚,因为:
a.我只能声明一个MyUnorderedMap吗?
湾 我怎样才能申报使用不同的新MyUnorderedMap next_block大小比1024在运行时间?

c++ boost memory-management unordered-map allocator

6
推荐指数
1
解决办法
1258
查看次数

如何使用“ tc”命令对特定端口进行简单的流量控制

我是Linux的新手,我的目标是使用tc命令(或其他命令,例如ifconfig或iptables,为“ eth0”或“ lo”创建简单的流量控制),但我认为我不需要它们。

我的内核是2.6.18-238.el5 GNU / Linux,我正在使用redhat。

我的脚本是:

tc qdisc del dev $DEV root
tc qdisc add dev $DEV root handle 1: htb default 10
tc class add dev $DEV parent 1: classid 1:10 htb rate $DNLD
tc filter add dev $DEV parent 1: protocol ip u32 match ip dport $input_port 0xffff flowid 1:10
Run Code Online (Sandbox Code Playgroud)

$ DNLD是带宽限制,$ DEV是eth0或lo,而$ input_port是我要限制的端口。

我在互联网上阅读了很多页面,并且了解到应该这样写,但是这行代码并不限制特定的端口,而是所有端口。

我尝试也使用“运动”,但它也无法正常工作。所以我不明白问题是什么。

另一个奇怪的事情是,带宽限制似乎正在起作用,并且重置行似乎也在起作用,(这是第一行:tc qdisc del dev $ DEV root)

但仍然,我写完之后的输出行是:“ RTNETLINK答案:没有这样的文件或目录”,我不知道为什么以及是否会造成任何损坏。

如果您需要其他任何信息,请告诉我。我很高兴有人能帮助我。谢谢你。

linux

5
推荐指数
1
解决办法
6794
查看次数

mailx更改发件人姓名

我明白,为了更改发件人姓名,mailx我应该执行以下操作:

mailx -r newmail@mail.com -s "some subject" my@email.com
Run Code Online (Sandbox Code Playgroud)

但当我这样做时,我得到:

mailx: invalid option -- r
Usage: mail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] to-addr ...
            [-- sendmail-options ...]
       mail [-iInNv] -f [name]
       mail [-iInNv] [-u user
Run Code Online (Sandbox Code Playgroud)

有谁知道发生了什么?谢谢,

email sendmail mailx

5
推荐指数
1
解决办法
1万
查看次数

如何使用Clion调试外部可执行文件

我想Clion使用使用外部makefile创建的可执行文件进行调试。
我看到可以在其中选择另一个可执行文件,Run/Debug Configurations --> Executable但是它会自动运行我CMakeLists不想执行的(因为它失败了)。

我知道Clion当前不支持“使用现有Makefile导入项目”。

有没有办法做到这一点?

c++ ide debugging clion

5
推荐指数
1
解决办法
2300
查看次数

异步 IO 中实际发生了什么

我一直在阅读为什么异步 IO 比同步 IO 更好,这是因为在异步 IO 中,你的程序可以继续运行,而在同步 IO 中,你会被阻塞,直到操作完成。
我不明白这句话,因为使用同步IO(例如write())内核将数据写入磁盘 - 它本身不会发生。内核确实需要 CPU 时间才能完成此操作。
因此,在 a-sync IO 中,它也需要它,这可能会导致上下文从我的应用程序切换到内核。所以它并不是真正的阻塞,但是确实需要 cpu 周期来运行这个操作。

  • 那是对的吗?
  • 这两者之间的区别是我们假设磁盘访问很慢,因此与等待数据写入磁盘的同步IO相比,在异步IO中,等待数据写入磁盘的时间可以使用继续进行应用程序处理,并且将其写入磁盘的内核部分很小?
  • 假设我有一个应用程序,它所做的只是获取信息并将其写入文件。使用异步 IO 代替同步 IO 有什么好处吗?

同步IO示例:

  • 写()

异步IO的例子:

  • io_uring(据我所知也有零拷贝,所以这是一个好处)
  • spdk(应该是最好的,虽然我不明白如何使用它)
  • 爱欧

c c++ linux io

5
推荐指数
1
解决办法
2145
查看次数

operator >>适用于Visual C++ 2010,但不适用于Linux上的G ++

我有以下问题:

我的代码在visual c ++ 2010中运行良好,但是当我在Linux上编译它时,它会被编译,但有些东西不起作用:

这是我的Vector意见operator>>:

istream& operator>>(istream& in,Vector& x)
{
char a;
in.sync();
a=in.get(); //gets the '['
for(int i=0;i<x._n;i++)
    {
        in>>x._vector[i];
        if ((i+1)!=x._n)
        a=in.get(); //gets the ','
    }
in>>a; //gets the ']'
return in;
}
Run Code Online (Sandbox Code Playgroud)

_vector点的阵列上Complex号,operator>>该的Complex优良工程.

输入应该如下所示:

[2+3i,9i,1]
Run Code Online (Sandbox Code Playgroud)

当我在visual c ++ 2010上运行此代码时,它可以正常工作,如下所示:

cin>>v; // [1+1i,2]
cin>>u; // [10,5i]
cout<<v<<endl; //prints: [1+i,2]
cout<<u<<endl; //prints: [10,5i]
Run Code Online (Sandbox Code Playgroud)

当我在Linux上运行相同的代码时,在第一个数组之后[1+1i,2]程序结束:

[1+1i,2]  //this is the input
[6.105e-317+6.105e-317i,6.105e-317+6.105e-317i]
[6.105e-317+6.105e-317i,6.105e-317+6.105e-317i]
Run Code Online (Sandbox Code Playgroud)

现在我甚至不能写另一个 Vector

顺便说一下:这是我的Vector.h

#ifndef …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

4
推荐指数
1
解决办法
309
查看次数