7

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();
}

ここで、output は暗号化されたデータが保存される OutputStream であり、input はプレーンテキスト データが読み取られる InputStream です。

4

3 に答える 3

5

別のストアタイプを指定するだけです

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

于 2012-04-20T15:29:34.397 に答える
2

証明書は公開キー暗号化に使用され、対称ブロック暗号 AES-128 の暗号化キーは含まれません。代わりに、公開キー暗号化は 128 ビット AES キーの暗号化またはネゴシエーションにのみ使用され、残りの会話では AES が使用されます。

128 ビットの AES キーは証明書ではなく、暗号的に強力な乱数ジェネレーターからの 128 ビットであるか、またはPBKDF2などのハッシュ アルゴリズムを使用してパスフレーズから派生したものです。これらのビットを取得する方法は、アプリケーションによって異なります。SSL/TLS はランダム キーをネゴシエートする必要がありますが、ハード ディスク暗号化プログラムはパスフレーズからキーを取得します。

于 2009-05-19T18:17:45.880 に答える
0

512ビットより短いキーペアを生成できないことは理にかなっています。公開鍵暗号化では、同じレベルのセキュリティを維持するために、対称鍵暗号化よりも長い鍵が必要です。128ビットのキーペアは、公開キー暗号化には推奨されません。

于 2009-05-19T09:17:24.693 に答える