C++ openssl签名和编程加密有何区别

C++ openssl签名和编程加密有何区别,c++,encryption,openssl,C++,Encryption,Openssl,有这样一个问题: 我的问题不是重复的。我想问的是,在编程方面,两者之间是否存在差异 我有一个OpenSSL C++ API来签署和验证一条消息。假设有两个功能: 符号 验证 假设交换消息的双方是A和B 当前签名函数使用A_私钥,验证函数使用B_公钥 现在,我想对消息的某些部分进行加密 那么,我是否可以只使用带有BÈu公钥的sign函数 或者加密的算法完全不同,我需要实现一个新函数 或者在sign函数中进行一些修改(例如,删除生成哈希)后,它是否正常工作 Now, I want to encry

有这样一个问题:

我的问题不是重复的。我想问的是,在编程方面,两者之间是否存在差异

我有一个OpenSSL C++ API来签署和验证一条消息。假设有两个功能:

符号

验证

假设交换消息的双方是AB

当前签名函数使用A_私钥,验证函数使用B_公钥

现在,我想对消息的某些部分进行加密

那么,我是否可以只使用带有BÈu公钥的sign函数

或者加密的算法完全不同,我需要实现一个新函数

或者在sign函数中进行一些修改(例如,删除生成哈希)后,它是否正常工作

Now, I want to encrypt some part of the message.
So, could I do it just using sign function with B_publicKey?
sign函数的输出是原始消息的加密散列。如果“A”要像您描述的那样传输符号的输出,B唯一能做的就是将其解密回原始消息的散列他不会得到真正的信息。

由于非对称加密在计算上可能非常昂贵,无法很好地扩展到长消息,因此标准模式如下:

  • Alice生成了一条要发送给Bob的消息
  • Alice首先生成对称密钥
  • Alice使用此对称密钥加密消息
  • Alice用Bob的公钥加密对称密钥
  • Alice将加密消息和加密密钥传输给Bob
然后Bob这样做:

  • Bob接收对称加密的消息和 非对称加密密钥
  • Bob用他的公钥解密对称密钥
  • Bob使用对称密钥解密加密的消息
可能还有很多其他的安全原则也不见了,但以上是总体思路

sign函数的输出是原始消息的加密散列。如果“A”要像您描述的那样传输符号的输出,B唯一能做的就是将其解密回原始消息的散列他不会得到真正的信息。

由于非对称加密在计算上可能非常昂贵,无法很好地扩展到长消息,因此标准模式如下:

  • Alice生成了一条要发送给Bob的消息
  • Alice首先生成对称密钥
  • Alice使用此对称密钥加密消息
  • Alice用Bob的公钥加密对称密钥
  • Alice将加密消息和加密密钥传输给Bob
然后Bob这样做:

  • Bob接收对称加密的消息和 非对称加密密钥
  • Bob用他的公钥解密对称密钥
  • Bob使用对称密钥解密加密的消息

可能还有很多其他的安全原则也不见了,但以上是一般的想法。

事实上,由于散列,我曾问过如果我们从签名函数中删除散列部分会发生什么,即直接对消息签名,而不是散列,尽管计算代价很高。那输出是什么?加密消息?从公钥/私钥的角度来看,它相当于完全加密。不确定OpenSSL是否可以在不首先生成密钥的情况下对完整消息进行公钥加密。不确定“签名”是否也会用额外的元和头来装饰消息。实际上,由于散列,我问过如果我们从签名函数中删除散列部分会发生什么,即直接对消息签名,而不是散列,即使计算代价很高。那输出是什么?加密消息?从公钥/私钥的角度来看,它相当于完全加密。不确定OpenSSL是否可以在不首先生成密钥的情况下对完整消息进行公钥加密。不确定“签名”是否也用附加的元和头来装饰消息。