Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cryptography 使用椭圆曲线密码,使用公钥加密,使用私钥解密_Cryptography - Fatal编程技术网

Cryptography 使用椭圆曲线密码,使用公钥加密,使用私钥解密

Cryptography 使用椭圆曲线密码,使用公钥加密,使用私钥解密,cryptography,Cryptography,大家好。 是否可以为椭圆曲线加密执行公钥加密流? 我需要实现以下场景: Alice生成一条消息 Alice用Bob的公钥加密 Alice(通过不安全的通道)向Bob发送消息 鲍勃得到消息了 Bob只能用他的私钥解密此消息 我在tweetlib()中找不到合适的方法。有人能告诉我正确的方向吗 提前谢谢。我建议您去一个简单的库,它使您的工作变得简单,我特别喜欢python ecdsa模块(),它简单而不复杂。另外,请阅读EC的工作原理,它将帮助您做出决定。您链接到TweetJS的文档中不是有加密方

大家好。 是否可以为椭圆曲线加密执行公钥加密流?

我需要实现以下场景:

  • Alice生成一条消息
  • Alice用Bob的公钥加密
  • Alice(通过不安全的通道)向Bob发送消息
  • 鲍勃得到消息了
  • Bob只能用他的私钥解密此消息 我在tweetlib()中找不到合适的方法。有人能告诉我正确的方向吗


    提前谢谢。

    我建议您去一个简单的库,它使您的工作变得简单,我特别喜欢python ecdsa模块(),它简单而不复杂。另外,请阅读EC的工作原理,它将帮助您做出决定。

    您链接到TweetJS的文档中不是有加密方法吗?

    nacl.box(消息、临时消息、他们的公钥、我的秘钥)

    使用对等方的公钥、我们的私钥和给定的nonce对消息进行加密和身份验证,该nonce对于密钥对的每个不同消息都必须是唯一的

    返回一条经过加密和身份验证的消息,该消息的长度比原始消息长


    您可以使用收件人的公钥作为上述函数的第三个参数。您可以使用自己的私钥作为第四个参数。库通过创建加密邮件的签名(由您的私钥签名)来保证邮件的完整性。

    您应该寻找一个ECIES实现。是一个似乎支持它的随机JavaScript库

    椭圆曲线不支持RSA那样的加密原语。有EC ElGamal,但由于密钥大小较小以及ElGamal的开销较大,因此不值得

    要使用曲线加密,需要使用混合加密。ECIES是混合加密:离线ECDH密钥协议以及使用派生密钥执行的对称加密



    请注意,ECIE未得到很好的标准化。您可能需要选择自己的密钥派生函数、流密码或分组密码以及操作模式。对于密钥派生方法,您可以在可用的情况下选择HKDF。如今,GCM模式下的AES似乎是密码的明智选择(12字节IV可以设置为零,也可以设置为从“共享机密”派生的值)。支持ECIES的库可能对ECIES应该是什么样子有自己的想法,但要注意兼容性问题…

    如果您正在寻求帮助/建议来实现这种方案,最好向stackoverflow咨询。我支持下面camp0的回答,即找到一个现有的实现可能比编写自己的实现更好。你也可以查一下,我同意。StackOverflow是最适合它的地方。ECDSA是一种签名算法,它不做加密。我不想在加密流程中涉及其他密钥。如果它只有公钥,它将适合我。如果您对验证消息来源不感兴趣,请使用第二个固定(或一次性)公钥-私钥对。使用一次性私钥对消息进行“签名”,并随加密消息一起发送相应的公钥,以便收件人可以对其进行身份验证和解密。顺便说一句,我成功地将密钥从ed25519转换为ed25519curve。而curve支持加密,这意味着这是可能的。您可以在这里查看: