接下来,让我们想想加密密钥。Java 平台的核心库可用于创建强加密密钥;但是,这些方法总是会得到一个随机生成的新密钥。所以,如果您使用 Java KeyGenerator
类创建密钥,则需要存储该密钥,以供将来使用(也就是说,在您决定使用该密钥解密已加密的文本之前使用)。为此,您可以使用 Java 平台 KeyStore
实用程序和相应的类。
KeyStore
包含一组类,这些类使您能够将密钥保存到采用密码保护的二进制文件(名为 keystore)中。我可以使用一些测试案例来测试 Java 中的密钥。首先,我创建一个 Key
的两个实例,显示每个实例对应的加密的 String
是不同的,如清单 4 所示:
清单 4. 使用两个不同密钥的简单加密
@Test public void testEncryptRandomKey() throws Exception { SecretKey key = KeyGenerator.getInstance("AES").generateKey(); Cryptographical crypto = AESCryptoImpl.initialize(new AESCryptoKey(key)); String enc = crypto.encrypt("Andy"); Assert.assertEquals("Andy", crypto.decrypt(enc)); SecretKey anotherKey = KeyGenerator.getInstance("AES").generateKey(); Cryptographical anotherInst = AESCryptoImpl.initialize(new AESCryptoKey(anotherKey)); String anotherEncrypt = anotherInst.encrypt("Andy"); Assert.assertEquals("Andy", anotherInst.decrypt(anotherEncrypt)); Assert.assertFalse(anotherEncrypt.equals(enc)); } |