小编psi*_*bar的帖子

为什么RSA加密文本会为同一文本提供不同的结果

我使用RSA加密使用openSSL加密数据,效果很好.我对RSA的理解是,使用相同的公钥加密相同的数据总会给你相同的结果(如此处此处所述).

但是,使用openssl每次重复加密时都会得到不同的结果.例如:

?  ~  echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin  | shasum
      11b6e058273df1ebe0be5e0596e07a6c51724ca0  -

?  ~  echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin  | shasum
      05cb82595f7429ef196189f4e781088597d90eee  -
Run Code Online (Sandbox Code Playgroud)

那么为什么输出不是唯一的呢?是因为我得到RSA加密错误还是因为openssl做了一些额外的魔术?

实际上我正在尝试设计一个只存储RSA加密数据的数据库.我想对加密信息的哈希值进行搜索,如果加密过程本身不是唯一的,这是不可能的.

unix terminal openssl cryptography rsa

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

结构的序列化

假设我有一个结构,其成员值我想通过网络发送到使用winsock 2的另一个系统.我正在使用C++语言.我如何将其转换为char*记住结构必须在发送之前被序列化,以及如何将char*反序列化为另一端的struct?我发现boost序列化是对类似问题的建议,但任何人都可以通过一个小的代码片段来说明序列化和反序列化吗?

这个问题可能看起来很基本,但相关帖子的其他答案并没有多大帮助.

c++ serialization winsock2 deserialization

11
推荐指数
4
解决办法
3万
查看次数

'catch'的参数

我读了" 编程:使用C++的原理和实践 "一书(Bjarne Stroustrup).有时作者写道:

catch (runtime_error e)
Run Code Online (Sandbox Code Playgroud)

但有时他写道:

catch (runtime_error& e)
Run Code Online (Sandbox Code Playgroud)

据我所知,第一个变体创建源的副本,但第二个变量使用链接.还是我弄错了?这对于这种情况下的"捕获"不重要吗?

c++

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