OpenSSL 支持 ed25519,加密内容?

OpenSSL 支持 ed25519,加密内容?

使用 OpenSSL 1.1.1.b-1,我可以生成 RSA 密钥对并使用它们来加密内容:

openssl genrsa -out private_key 4096
openssl rsa -in private_key -pubout -outform PEM -out public_key.pem
openssl rsautl -encrypt -inkey public_key.pem -pubin -in original.txt -out encrypted.enc
openssl rsautl -decrypt -inkey private_key -in encrypted.enc -out original.txt

但尝试使用 ed25519 密钥加密内容,

openssl genpkey -algorithm ED25519 -out private_key
openssl pkey -in private_key -pubout -out public_key
openssl pkeyutl -encrypt -inkey public_key -pubin -in original.txt -out encrypted.enc

导致错误:

pkeyutl: Error initializing context
140302731502080:error:0608B096:digital envelope routines:EVP_PKEY_encrypt_init:operation not supported for this keytype:crypto/evp/pmeth_fn.c:141:

OpenSSL 1.1.1.b-1 无法执行该功能,还是我错误地使用了 pkeyutl?

答案1

  1. openssl rsautl不是用于加密消息。 文档非常糟糕,具有误导性,几十年来一直如此,这不是我的错。一般来说,openssl命令行实用程序诊断工具和调试辅助工具用于各种软件和加密协议,其中大多数都是多年前设计的,过于复杂。

    基本上没人应该使用openssl rsautl。唯一一个openssl甚至设计用于加密消息使用 RSA 是openssl smime/ openssl cms—并且很糟糕因为协议设计者是一群沉迷于打印机烟雾的官僚。

  2. Ed25519 是一种签名方案。它不进行加密。 有一些公钥加密方案(经过身份验证或匿名)使用与 Ed25519 相同的一些底层数学思想,但您不能使用 Ed25519 本身来加密消息,就像您不能使用 RSASSA-PSS 来加密消息一样。

相关内容