簡體   English   中英

使用keytool生成128位密鑰

[英]Generating 128-bit keys with 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();
}

其中輸出是一些OutputStream,其中將保存加密數據,輸入是一些InputStream,其中將讀取明文數據。

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

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

證書用於公鑰加密,不包含對稱分組密碼AES-128的加密密鑰。 相反,公鑰加密僅用於加密或協商128位AES密鑰,而其余會話使用AES。

128位AES密鑰不是證書,它只是來自加密強隨機數生成器的128位,或者是使用諸如PBKDF2之類的散列算法從密碼短語派生的。 如何獲得這些位將取決於您的應用程序。 SSL / TLS必須協商隨機密鑰,但硬盤加密程序將從密碼短語中獲取密鑰。

有意義的是,不能生成短於512位的密鑰對。 公鑰加密需要比對稱密鑰加密更長的密鑰來維持相同的安全級別。 建議不要將128位密鑰對用於公鑰加密。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM