How Do I Generate an SSE-C Encryption Key?
Sample code of generating an SSE-C encryption key and its MD5 value:
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SseCTool {
public static void main(String[] args) {
// Example of an encryption key. A string of 32 characters is used to generate a 256-bit key. The key can be changed according to your actual service requirements, but it must be a 256-bit key generated by a string of 32 characters.
String keyString = "12345678901234567890123456789012";
// Compute the x-obs-server-side-encryption-customer-key header.
String customerKey = toBase64String(keyString.getBytes(Charset.forName("UTF-8")));
System.out.println("customer key is : " + customerKey);
// Compute the x-obs-server-side-encryption-customer-key-MD5 header.
String customerKeyMD5 = computeMD5(fromBase64(customerKey));
System.out.println("md5 for customer key is : " + customerKeyMD5);
}
// Compute the Base64 character string.
public static String toBase64String(byte[] data) {
java.util.Base64.Encoder encoder = java.util.Base64.getEncoder();
return new String(encoder.encode(data), Charset.forName("UTF-8"));
}
// Compute the MD5 character string.
public static String computeMD5(byte[] b64Data) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(b64Data);
byte[] byteArray = md5.digest();
return toBase64String(byteArray);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
}
public static byte[] fromBase64(String b64Data) {
java.util.Base64.Decoder decoder = java.util.Base64.getDecoder();
return decoder.decode(b64Data.getBytes(Charset.forName("UTF-8")));
}
}
Last Article: How Do I Download an Encrypted Object Using a URL?
Next Article: How Do I Obtain the Security Token?
Did this article solve your problem?
Thank you for your score!Your feedback would help us improve the website.