gpt4 book ai didi

c++ - openssl 以编程方式签名和加密有何不同

转载 作者:太空宇宙 更新时间:2023-11-04 12:36:51 25 4
gpt4 key购买 nike

SO 上有这个问题:

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

我的问题不是重复的。我问的是两者之间是否有编程上的区别。

我有一个 openssl C++ API 来签署和验证消息。假设有两个函数:

签名

验证

假设交换消息的双方是AB

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

现在,我想加密消息的某些部分。

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

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

或者对 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”按照您的描述传输 sign 的输出,B 唯一能做的就是将其解密回原始消息的哈希值。 他不会收到实际消息。

因为非对称加密可能是一个计算量非常大的操作,不能很好地扩展长消息,标准模式是这样的:

  • Alice 生成一条消息,她想发送给 Bob。
  • Alice 首先生成一个对称 key
  • Alice 用这个对称 key 加密消息。
  • Alice用Bob的公钥加密对称 key
  • Alice 将加密消息和加密 key 传输给 Bob。

然后鲍勃这样做:

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

可能还缺少大量其他安全原则,但以上是总体思路。

关于c++ - openssl 以编程方式签名和加密有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56035818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com