使用keytool生成128位密钥

Chr*_*eng 7 java security cryptography bouncycastle keytool

有没有办法使用Sun的keytool程序生成适合加密的128位密钥对?似乎不支持http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator中提供的算法,或者不允许短于512位的密钥.

密钥对将与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();
}
Run Code Online (Sandbox Code Playgroud)

其中输出是一些OutputStream,其中将保存加密数据,输入是一些InputStream,其中将读取明文数据.

igo*_*024 5

您只需指定不同的商店类型即可

keytool -genseckey -alias check2 -keyalg AES -keysize 128 -storepass changeit -storetype JCEKS -keystore ks.jck


San*_*nen 0

无法生成短于 512 位的密钥对是有道理的。公钥加密需要比对称密钥加密更长的密钥才能维持相同级别的安全性。不建议将 128 位密钥对用于公钥加密。