如何使用ssh-rsa公钥加密文本?

如何使用ssh-rsa公钥加密文本?

因此,场景是:假设我是 Bob,我想为 Alice 加密一些消息。我拥有的唯一公钥是她的ssh-rsaid_rsa.pub,如下所示:

SSH-RSA AAAAB3NzaC1yc2EAAAABIwAAAQEAyb+qaZLwgC7KAQJzYikf3XtOWuhlMXVv2mbTKa5dp0sHPRd2RaYnH8ZRkt7V8bjqct1IHGCuxI8xyoEp4at3FHe6j9RfWiarc1ldLUCmTtryI0GGpRs6Zpvqdtpcq/1NCIYtUQAvsImyEFCtqmB2suDo1ZSllZ Q0x9TCKHdCANYIOeaniuFzR57POgE3vxk/r6PO24oy8BIWqxvi29r0n1LUigVBJ7CmMHuzb4/+i1v6PxV1Lqnj6osPP9GpXpsh8kLUCby/KcmcryWNdSP0esyCdDxkA5hlIuk8qL1vzsyPluUQuc0BEHu6nuw8WQlCF1mFFxcpJL+MhWEr01WIIw==[电子邮件保护]

那么,有没有办法用这个公钥加密字符串,以便她可以使用她的私钥id_rsa(从生成ssh-keygen)来解密消息?

(我知道如果您使用密钥对文件,这马上就可以实现.pem。如果您能向我展示如何将其转换为支持的格式openssl,那就太好了!)

谢谢!

答案1

可以将您的 ssh 公钥转换为 PEM 格式('openssl rsautl' 可以读取它):

例子:

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > id_rsa.pem.pub

假设“myMessage.txt”是您的消息,应该用公钥加密。

然后只需使用 openssl rsautl 和转换后的 PEM 公钥加密您的消息,就像平常一样:

openssl rsautl -encrypt -pubin -inkey id_rsa.pem.pub -ssl -in myMessage.txt -out myEncryptedMessage.txt

结果是“myEncryptedMessage.txt”中的加密消息

要测试你使用 Alice 的私钥解密的工作:

openssl rsautl -decrypt -inkey ~/.ssh/id_rsa -in myEncryptedMessage.txt -out myDecryptedMessage.txt

答案2

尝试一下ssh-vault它使用 ssh-rsa 公钥加密“创建保险库”,使用 ssh-rsa 私钥解密“查看保险库内容”

答案3

https://www.bjornjohansen.com/encrypt-file-using-ssh-key。其理念是生成一个一次性的对称密钥,该密钥足够短,可以使用 SSH 公钥进行加密。然后,您使用对称密钥加密您的文本,并将加密文本和加密密钥都发送给收件人。

答案4

为什么不采用非常明显的方式来做到这一点,而不需要滚动自己的加密。

Alice sftps 至[电子邮件保护]设置为仅允许对帐户 alice 进行公钥身份验证。ssh 的属性很好地确保了只有 alice 可以进行身份​​验证。即使是中间人攻击也会失败,因为(假设您禁用 ssh1 并坚持正确的设置)使用 DH 的初始通信会创建一个 alice 和 bob 都知道的值,但中间人不知道,这可用于验证没有回复或 MITM 攻击可以看到通信的内容。

因此让 alice sftp 进入你的盒子并下载文件。

相关内容