本文实例讲述了Java生成非对称型加密公钥和私钥的方法。分享给大家供大家参考。具体如下:
非对称型加密非常适合多个客户端和服务器之间的秘密通讯,客户端使用同一个公钥将明文加密,而这个公钥不能逆向的解密,密文发送到服务器后有服务器端用私钥解密,这样就做到了明文的加密传送。
非对称型加密也有它先天的缺点,加密、解密速度慢制约了它的发挥,如果你有大量的文字需要加密传送,建议你通过非对称型加密来把对称型‘密钥'分发到客户端,及时更新对称型‘密钥'。
KeyRSA.java如下:
import java.io.*; import java.security.*; import javax.crypto.*; import javax.crypto.spec.*; /** * RSA非对称型加密的公钥和私钥 */ public class KeyRSA { private KeyPairGenerator kpg = null; private KeyPair kp = null; private PublicKey public_key = null; private PrivateKey private_key = null; private FileOutputStream public_file_out = null; private ObjectOutputStream public_object_out = null; private FileOutputStream private_file_out = null; private ObjectOutputStream private_object_out = null; /** * 构造函数 * @param in 指定密匙长度(取值范围:512~2048) * @throws NoSuchAlgorithmException 异常 */ public KeyRSA(int in, String address) throws NoSuchAlgorithmException, FileNotFoundException, IOException { kpg = KeyPairGenerator.getInstance("RSA"); //创建‘密匙对'生成器 kpg.initialize(in); //指定密匙长度(取值范围:512~2048) kp = kpg.genKeyPair(); //生成‘密匙对',其中包含着一个公匙和一个私匙的信息 public_key = kp.getPublic(); //获得公匙 private_key = kp.getPrivate(); //获得私匙 //保存公匙 public_file_out = new FileOutputStream(address + "/public_key.dat"); public_object_out = new ObjectOutputStream(public_file_out); public_object_out.writeObject(public_key); //保存私匙 private_file_out = new FileOutputStream(address + "/private_key.dat"); private_object_out = new ObjectOutputStream(private_file_out); private_object_out.writeObject(private_key); } public static void main(String[] args) { try { new KeyRSA(1024, "c:/key_rsa"); } catch (IOException ex) { } catch (NoSuchAlgorithmException ex) { } } }
希望本文所述对大家的java程序设计有所帮助。
问题内容: 此代码生成一对公钥/私钥: 我想知道的是您通常如何存储公钥: 选项1:存储字节 我不喜欢将代码绑定到诸如和的具体实现。 选项2:存储模数和指数 第二个选项更易于实现,但是我不知道它是否可能性能较低。 有什么建议吗? 问题答案: 在我们的应用程序中,我们以DER格式存储公钥和私钥,以便可以在Java外部更轻松地使用和操纵它们。在我们的情况下,私钥上没有密码。 要将私钥转换为在Java中更
如果我尝试使用OpenSSL命令行生成3TDES加密的PKCS 8密钥: 我得到: PKCS8 RFC没有说明必须使用哪种算法来创建密钥块。它确实给出了PKCS5算法作为例子。有没有办法使用OpenSSL创建一个由DES密钥加密的PKCS8密钥?如果不是,它是OpenSSL不支持的还是一个非常不标准的事情? 下面是通过OpenSSL命令行(密码测试)使用基于密码的加密创建的示例: 这里是我手工制作
我知道这很难...但我使用OpenSSL以一种非常标准的方式加密文件。该文件使用RSA-2048公钥在AES-256中加密。我想在Java中使用私钥解密文件。我研究了很长时间,尝试了很多方法,但似乎都行不通。我只是找到相关的问题与工作的解决方案,但不是确切地为我的问题。 我使用以下命令生成public-/private-key-pair:
我已经在Java中设置了公钥和私钥加密,并分发了两个用户的公钥(通信是在两个用户之间)。我现在希望用户交换一个对称密钥。我应该做的: 用户A生成密钥。 用户A用他的私钥加密密钥,然后用B的公钥加密。 用户A发送加密密钥。 用户B接收加密密钥。 用户B先用他的私钥解密密钥,然后用A的公钥解密密钥。 用户A生成密钥的我的代码: 第8行抛出以下错误: 非常感谢任何帮助。多谢了。
问题内容: 关于AES 256加密: 什么是公钥和私钥? 如何生成这两个密钥? 如何使用公众加密数据? 如何使用私有解密数据? 问题答案: 在.Net中,您可以这样创建密钥对: 然后,您可以使用公共密钥对消息进行加密,如下所示: 并使用私钥像这样解密:
问题内容: 我正在寻找一个Java库或代码来即时生成证书,公共和私有密钥,而无需使用第三方程序(例如openssl)。 我认为是从Java代码中获取keytool + openssl的东西。 考虑使用ssl和客户端身份验证保护的基于Java servlet的Web应用程序。我希望Servlet容器仅在请求时使用Java代码生成客户端证书(例如pkcs12格式)。 问题答案: 您可以使用一对或密钥在