有没有一种方法可以生成适合使用 Sun 的 keytool 程序进行加密的 128 位 key 对?似乎 http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator 中可用的算法不支持或不允许短于 512 位的 key 。
key 对将与 ff 一起使用。代码片段:
Security.addProvider(new BouncyCastleProvider());
KeyStore keyStore = KeyStore.getInstance("PKCS12");
FileInputStream keyStoreSource = new FileInputStream("keystore");
try {
keyStore.load(keyStoreSource, "password".toCharArray());
} finally {
keyStoreSource.close();
}
String alias = (String) keyStore.aliases().nextElement();
PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, "password".toCharArray());
X509Certificate certificate = (X509Certificate) keyStore.getCertificate(alias);
CMSEnvelopedDataStreamGenerator generator = new CMSEnvelopedDataStreamGenerator();
generator.addKeyTransRecipient(certificate);
OutputStream output2 = generator.open(output, CMSEnvelopedDataGenerator.AES128_CBC, BouncyCastleProvider.PROVIDER_NAME);
try {
IOUtils.copy(input, output2);
} finally {
output2.close();
output.close();
}
其中输出是一些 OutputStream,其中将保存加密数据,输入是一些 InputStream,其中将读取明文数据。
最佳答案
你只需要指定不同的storetype
keytool -genseckey -alias check2 -keyalg AES -keysize 128 -storepass changeit -storetype JCEKS -keystore ks.jck
关于java - 使用 keytool 生成 128 位 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/881661/