Java 使用客户提供的密钥进行JetS3t和服务器端加密

Java 使用客户提供的密钥进行JetS3t和服务器端加密,java,amazon-web-services,encryption,amazon-s3,jets3t,Java,Amazon Web Services,Encryption,Amazon S3,Jets3t,我正在探索一种将加密数据存储到S3的方法。我的后端是用Java构建的,我已经在使用JetS3t库进行一些简单的S3存储操作。所以,我的问题是:如何使用JetS3t在S3上以加密格式存储文件 我试图查看JetS3t的程序员Guid,但在这方面没有找到任何具体内容。根据此处的文档,您需要在请求中添加以下标题: x-amz-服务器端​-加密​-客户算法使用此标题指定加密算法。标题值必须为“AES256” x-amz-服务器端​-加密​-客户密钥使用此标头为Amazon S3提供256位base64编

我正在探索一种将加密数据存储到S3的方法。我的后端是用Java构建的,我已经在使用JetS3t库进行一些简单的S3存储操作。所以,我的问题是:如何使用JetS3t在S3上以加密格式存储文件


我试图查看JetS3t的程序员Guid,但在这方面没有找到任何具体内容。

根据此处的文档,您需要在请求中添加以下标题:

  • x-amz-服务器端​-加密​-客户算法
    使用此标题指定加密算法。标题值必须为“AES256”
  • x-amz-服务器端​-加密​-客户密钥
    使用此标头为Amazon S3提供256位base64编码的加密密钥,用于加密或解密数据
  • x-amz-服务器端​-加密​-customer-key-MD5
    根据RFC 1321,使用此标头提供加密密钥的base64编码128位MD5摘要。AmazonS3使用此报头进行消息完整性检查,以确保加密密钥传输无误
如果您使用AmazonJavaSDK,这样做很容易,文档中提供了示例。但要使用JetS3t执行此操作,您可以执行以下操作:

假设
s3Object
是您试图放在S3上的对象,使用适当的值为上述每个头调用以下命令

  • s3Object.addMetadata(“,”)