当前位置: 首页 > 知识库问答 >
问题:

OpenSSL公钥解密文件?

孙和安
2023-03-14

我的理解是,公钥可以用于加密,私钥可以用于解密,公钥不能解密由同一公钥加密的文件。我有没有误解,或者我做错了什么?

1) 生成密钥

openssl genrsa-out./private.pem2048

2) 生成公钥

openssl rsa-in/私有的pem-发布

3)加密一个小文本文件

openssl加密/在里面txt-输出/出来附件e-aes256-k/平民的pem公司

4) 使用公钥解密文件

openssl加密/出来enc-输出/出来txt-d-aes256-k/平民的pem公司

最后一步可以解密“out.enc”文件。不是我想要或期望的。

共有2个答案

翟卓君
2023-03-14

不,那是错的。这两个密钥(公钥和私钥)可用于加密和解密。关键是你不能用同一把钥匙反转操作。

e. g.

encrypt(doc, publickey) -> decrypt(crypteddoc, publickey)  // fails
encrypt(doc, privatekey) -> decrypt(crypteddoc, privatekey) // fails

encrypt(doc, publickey) -> decrypt(crypteddoc,privatekey) // works
encrypt(doc, privatekey) -> decrypt(crypteddoc, publickey) // works

从技术上讲,您共享和公开哪个密钥并不重要,只要您将其中一个密钥公开,您就永远无法共享另一个私钥。

叶鸿
2023-03-14

虽然,这个问题真的很老,但我必须声明TS是对的:公钥无法解密由同一公钥加密的文件。只有相应的私钥可以。

真正的问题是AES不是公钥算法。它使用相同的密钥进行加密和解密,密钥可以是任意字节序列。

 类似资料:
  • 我想使用带有RSA算法的OpenSSL使用私钥加密文件: 现在,如果我执行解密操作: 此操作需要私钥 我知道我应该使用公钥进行加密,如果我使用私钥,我会得到一个签名。 然而,我想这样做是为了学习。

  • 我知道这很难...但我使用OpenSSL以一种非常标准的方式加密文件。该文件使用RSA-2048公钥在AES-256中加密。我想在Java中使用私钥解密文件。我研究了很长时间,尝试了很多方法,但似乎都行不通。我只是找到相关的问题与工作的解决方案,但不是确切地为我的问题。 我使用以下命令生成public-/private-key-pair:

  • 问题内容: 如何使用公共密钥加密大文件,以使只有拥有私有密钥的人才能解密该文件? 我可以使RSA公共和私有密钥生效,但是在使用以下命令加密大型文件时: 以及如何执行解密… 我通过以下命令创建我的私钥和公钥 我收到此错误: 我尝试制作大小从1024到1200位的键,没有运气,同样的错误 问题答案: 公钥加密不适用于对任意长文件进行加密。人们使用对称密码(例如AES)进行常规加密。每次生成,使用并使用

  • 使用EVP_BytesToKey()返回错误的key和iv可能出了什么问题? 我试过用iter计数值做实验,但似乎没有一个能产生工作键和IV。我假设命令行默认的iter计数是1。 同样确认的是,如果我用命令行显示的工作键和iv覆盖从EVP_BytesToKey()返回的内容和硬代码无符号char数组,我的其余代码工作正常,解密正确。 有人能帮忙吗?

  • 我们有一个签名服务,它接受sha256哈希作为输入,并使用pkcs11和C#中的bouncy Castle库对哈希进行签名,将签名摘要编码为Bae64并将其发送给请求者。因此,本质上我们正在生成哈希的哈希并对哈希进行签名。 为了验证这一点,另一端的请求者解码Base64接收到的摘要并验证它。我在PowerShell中使用了一个. NET库,并实现了一个验证过程。请参阅下面。 现在,为了避免散列,我

  • 我是Openssl的新手,我已经生成了私钥myprivatekey。pem和公钥mypublickey。pem与: 和我的公钥: 接下来我想做的是用通行短语私钥加密我的ecdsa,并对我的公钥进行认证请求,感谢大家的帮助。