java - 使用 keytool 生成 128 位 key

标签 java security cryptography bouncycastle keytool

有没有一种方法可以生成适合使用 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/

相关文章:

java - Java 中的密码学

java - Java 如何在运行时将 lib/rt.jar 链接到您的应用程序?

java - 三叉树的前序遍历

java - 如何在java中删除空格后的字符串

android - 使用 Android 设备凭据访问应用程序的关键部分

php - Nginx set_cookie_flag 安全强化 WordPress 的替代方案

java - 向 JTextArea 添加水印

PHP 安全用户变量

cryptography - 使用具有单 block 加密的常量 IV

c - 如何使用 OpenSSL 库在 C 中实现 Triple DES 加密