Amazon S3アダプタのクライアント暗号化利用に暗号鍵ファイルが必要な場合

 

Amazon S3アダプタでクライアント暗号化を指定して書き込み/読み取りを行う場合、暗号鍵ファイルは準備されていることが前提となっています。
暗号鍵ファイルを生成する為のjavaソースのサンプルを以下に掲載します。

コンパイルして実行することで、同ディレクトリに公開鍵(public.key)と秘密鍵(private.key)が生成されます。

 

import java.io.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;

public class makeKeyPair{
	public static void main(String[] args)
	throws NoSuchAlgorithmException, IOException {
		
			// 非対称鍵の生成 暗号化方式=DES
			KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("DES"); //暗号化方式の設定、DSA等
			keyGenerator.initialize(512, new SecureRandom());
			KeyPair keyPair = keyGenerator.generateKeyPair();
			
			PublicKey publicKey = keyPair.getPublic();
			PrivateKey privateKey = keyPair.getPrivate();
			
           // 生成された公開鍵ファイルを保存
			X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(publicKey.getEncoded());
			FileOutputStream keyfos = new FileOutputStream("./publicDES.key");
			keyfos.write(x509EncodedKeySpec.getEncoded());
			keyfos.close();
			
            // 生成された秘密鍵ファイルを保存
			PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(privateKey.getEncoded());
			keyfos = new FileOutputStream("./privateDES.key");
			keyfos.write(pkcs8EncodedKeySpec.getEncoded());
			keyfos.close();	
	}
}