· 7 years ago · Jan 05, 2019, 10:06 AM
1KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
2 keyGenerator.init(256, new SecureRandom());
3 SecretKey secretKey = keyGenerator.generateKey();
4 String secretKeyString = Base64.getEncoder().encodeToString(secretKey.getEncoded());
5
6 MessageDigest md5 = MessageDigest.getInstance("MD5");
7 md5.update(secretKey.getEncoded());
8 byte[] digest = md5.digest();
9 String md5String = Base64.getEncoder().encodeToString(digest);
10
11 S3Client client = S3Client.builder().region(Region.AP_SOUTHEAST_2).build();
12
13 PutObjectRequest putRequest = PutObjectRequest.builder()
14 .bucket("my-encrypted-bucket-ssec")
15 .key("my-file.png")
16 .sseCustomerAlgorithm("AES256")
17 .sseCustomerKey(secretKeyString)
18 .sseCustomerKeyMD5(md5String)
19 .build();
20 client.putObject(putRequest, Paths.get("my-file.png"));
21
22 GetObjectRequest getRequest = GetObjectRequest.builder()
23 .bucket("my-encrypted-bucket-ssec")
24 .key("my-file.png")
25 .sseCustomerAlgorithm("AES256")
26 .sseCustomerKey(secretKeyString)
27 .sseCustomerKeyMD5(md5String)
28 .build();
29 client.getObject(getRequest, Paths.get("my-file-copy.png"));