通过使用公钥和密钥,非对称加密法圆满地解决了这些问题。使用你的公钥,任何人都可以加密只能由你解开的信息。尽管你还是必须保护好自己的密钥,但是你的公钥可以任意发放或者放在某个中央库供人取用。在本文中,我将讲解如何使用Java扩展加密法(JCE)来利用非对称加密法的优势。在开始之前,先要下载完整的示例代码。
背景材料
本系列的头两篇文章讲解了对称加密:
JCE提供了一个API来使用非对称加密法。第一步是使用下面的代码片段生成一对公钥和私钥:
KeyPairGenerator kpg = null;
kpg = KeyPairGenerator.getInstance("RSA", "BC");
kpg.initialize(1024, new SecureRandom());
KeyPair kp = kpg.generateKeyPair();
PrivateKey priKey = kp.getPrivate();
PublicKey pubKey = kp.getPublic();
在这里,KeyPairGenerator的getInstance方法接受两个参数——实现和提供者。本文所有的例子都把Bouncy Castle(BC)作为提供者。在获得了KeyPairGenerator的实例之后,你必须将它初始化,指出你所期望的安全级别。在本文的例子里,你正在生成一对1,024位的密钥。下一步,你要创建KeyPair。通过KeyPair对象,你可以访问公钥和私钥。在我们的示例代码里,这对密钥被保存在文件系统里,供以后使用。