0
SMAIMEの実装について
BouncyCastleというライブラリを用いて
SMIMEの暗号化機能を実装しようとしています。
以下のようなコードでコンパイルエラーも無く、
とりあえず暗号化されたようなデータがファイルに出力されました。
(見辛くて申し訳ございません)
**--------------------------------------------
private static boolean encrypt(String outFilename,String inFilename,String KeyStoreFile,String storePass){
try{
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream(KeyStoreFile),storePass.toCharArray());
Enumeration en = ks.aliases();
String keyAlias = null;
while(en.hasMoreElements()){
String alias = (String) en.nextElement();
if(ks.isKeyEntry(alias)){
keyAlias = alias;
}
}
if(keyAlias == null){
System.out.println("can't find a private key !");
return false;
}
X509Certificate cert = (X509Certificate)ks.getCertificate(keyAlias);
PrivateKey privateKey = (PrivateKey)ks.getKey(keyAlias, "changeit".toCharArray());
SMIMEEnvelopedGenerator gen = new SMIMEEnvelopedGenerator();
gen.addRecipientInfoGenerator(new JceKeyTransRecipientInfoGenerator(cert).setProvider("BC"));
MimeBodyPart msg = new MimeBodyPart();
if(inFilename == ""){
msg.setText("test message");
}else{
msg.setDataHandler(new DataHandler(new FileDataSource(new File(inFilename))));
msg.setHeader("Content-Type", "application/octet-stream");
msg.setHeader("Content-Transfer-Encoding", "binary");
}
MimeBodyPart mp = gen.generate(msg, new JceCMSContentEncryptorBuilder(CMSAlgorithm.DES_EDE3_CBC,128).setProvider("BC").build());
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props,null);
body.setContent(mp.getContent(), mp.getContentType());
body.saveChanges();
body.writeTo(new FileOutputStream(new File(outFilename)));
}catch(Exception e){
System.out.println(e);
return false;
}
return true;
}
**--------------------------------------------
暗号化のアルゴリズムに『CMSAlgorithm.DES_EDE3_CBC』を指定しているので、
トリプルDESで暗号化されていると思っています。
しかし、トリプルDESの 2-KEY 、3-KEYのどちらで暗号化されているのかわかりません。
(もしくはDESになっている可能性もあります)
暗号化に使用する鍵の数を指定する方法、
上記のコーディングでは何で暗号化されるのかをご教授いただきたいと思います。
BouncyCastleの本家サイトで調べてみましたが、
思うような物が見つからず困っています。
よろしくお願いいたします。
実行環境は以下のとおりです。
jdk 1.5
bcmail 1.46