opensl以编程方式签名和加密有何不同

时间:2019-05-08 07:40:44

标签: c++ encryption openssl

SO上有一个问题:

What is the difference between encrypting and signing in asymmetric encryption?

我的问题不是重复的。我问这两个程序是否有区别。

我有一个openssl C ++ API来签名和验证消息。让我们说两个函数:

签名

验证

比方说,交换消息的两个方面是 A B

货币符号函数使用 A_privateKey ,验证函数使用 B_publicKey

现在,我想对邮件的某些部分进行加密。

那么,我可以只使用 sign 函数和 B_publicKey 吗?

还是加密算法完全不同,我需要实现一个新功能?

或者在 sign 函数中进行了一些修改(例如删除生成的哈希)是否可行?

1 个答案:

答案 0 :(得分:0)

Now, I want to encrypt some part of the message.
So, could I do it just using sign function with B_publicKey?

符号功能的输出是原始消息的加密的哈希。如果“ A”按照您的描述传输 sign 的输出,则B唯一能做的就是将其解密回原始消息的哈希值。 他没有实际的消息。

由于不对称加密可能是一项计算量很大的操作,无法很好地扩展长消息,因此标准模式如下:

  • Alice生成了一条她想发送给Bob的消息。
  • Alice首先生成对称密钥
  • Alice使用此对称密钥加密消息。
  • Alice用Bob的公钥加密对称密钥
  • Alice将加密的消息和加密的密钥发送给Bob。

然后鲍勃这样做:

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

可能还缺少很多其他安全主体,但以上只是一般性想法。