Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
Java 如何加密&;使用x509证书解密消息?_Java_Ssl_Encryption - Fatal编程技术网

Java 如何加密&;使用x509证书解密消息?

Java 如何加密&;使用x509证书解密消息?,java,ssl,encryption,Java,Ssl,Encryption,据我所知,x509证书用于分发公钥,在我的例子中,公钥是RSA密钥,因此我可以用它加密消息,但在不知道私钥的情况下,我无法取回消息。我在我的linux虚拟机上创建了密钥,并将它们复制到windows以用于我的项目,我通过以下方式获得它们: InputStream inputStream = new FileInputStream("./certificates/cert" + LoginController.getLoggedUser().getID() + ".crt"); Certifica

据我所知,x509证书用于分发公钥,在我的例子中,公钥是RSA密钥,因此我可以用它加密消息,但在不知道私钥的情况下,我无法取回消息。我在我的linux虚拟机上创建了密钥,并将它们复制到windows以用于我的项目,我通过以下方式获得它们:

InputStream inputStream = new FileInputStream("./certificates/cert" + LoginController.getLoggedUser().getID() + ".crt");
CertificateFactory cf = CertificateFactory.getInstance("X509");
Certificate c = cf.generateCertificate(inputStream);
myCert = (X509Certificate) c;

现在我使用证书做两件事,首先验证用户是否可以登录到应用程序,其次我必须使用隐写术对隐藏在picute中的消息进行加密/解密。所以我想知道哪个文件包含我的私钥,以及如何使用JavaSEAPI将其加载到我的程序中?(顺便说一句,我的虚拟机上仍然有CA主体和所有内容)。

私钥应该位于由

keytool
生成的密钥库中(理想情况下,没有其他地方——私钥是不打算分发的,因此得名)


看起来您可以通过的实例访问密钥库。您需要生成密钥库时使用的密码;它是
load
方法的参数之一。

私钥应该位于
keytool
生成的密钥库中(理想情况下,在其他任何地方——私钥都不会分发,因此得名)


看起来您可以通过的实例访问密钥库。您需要生成密钥库时使用的密码;这是加载方法的参数之一。

嗨,我想做的是用公钥加密我的消息,用私钥解密消息,这只是为了学校作业,安全性不是大问题。我可以使用
keytool
生成证书吗?可以。创建一个密钥对,使用它创建一个CSR(CSR
keytool
也可以生成),然后使用CSR和您的密钥对创建一个自签名证书。在野外不会太有用,因为它不是由受信任的CA签名的……但它对于学习来说已经足够好了。不过,考虑到在所有这些过程中您不需要真正证明您的身份,您可以跳过证书部分。你真正需要的是密钥,它可以独立于任何证书创建。你能给我一个链接来解释怎么做吗?好的,这比我想象的还要简单P谷歌给了我一个简短的提示,我想做的是用公钥加密我的信息,用私钥解密信息,这只是为了学校作业,安全性在这里不是什么大问题。我可以使用
keytool
生成证书吗?可以。创建一个密钥对,使用它创建一个CSR(CSR
keytool
也可以生成),然后使用CSR和您的密钥对创建一个自签名证书。在野外不会太有用,因为它不是由受信任的CA签名的……但它对于学习来说已经足够好了。不过,考虑到在所有这些过程中您不需要真正证明您的身份,您可以跳过证书部分。你真正需要的是密钥,它可以独立于任何证书创建。你能给我一个链接来解释怎么做吗?好的,这比我想象的还要简单P谷歌给了我一个快速的提示