【发布时间】:2014-07-08 14:00:01
【问题描述】:
我使用 Jets3t 作为第三方。我想使用客户密钥设置服务器端加密。我正在使用以下代码,但总是收到消息 “计算的密钥的 MD5 哈希与提供的哈希不匹配。”
我在 base64-encoded 和 customer-key-md5 based64-encoded(md5(customer-key)) 中使用 customer key ="123456"
x-amz-copy-source-server-side-encryption-customer-key 包含此标头可为 Amazon S3 提供 base64 编码的加密密钥以用于解密源对象。此加密密钥必须是您在创建源对象时提供的 Amazon S3 密钥;否则,Amazon S3 将无法解密该对象。
x-amz-copy-source-服务器端-加密-customer-key-MD5
包含此标头以根据 RFC 1321 提供加密密钥的 base64 编码的 128 位 MD5 摘要。
代码在这里
try {
S3Copy objS3Copy = new S3Copy((S3Service)new RestS3Service(new ProviderCredentials("xxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxx") {
@Override
protected String getTypeName() {
}
@Override
protected String getVersionPrefix() {
}
}), new BucketExplorerMain());
Map<String, Object> newMetadata = new HashMap<String, Object>();
newMetadata.put("ETag","c2fb88d3d9832648cb0b89957479c16b");
newMetadata.put("Content-Length","1326017");
newMetadata.put("accept","eng");
newMetadata.put("request-id","039A1F919BAB9D1A");
newMetadata.put("Last-Modified","Thu Feb 13 17:50:17 IST 2014");
newMetadata.put("Date","Tue Jul 08 17:05:10 IST 2014");
newMetadata.put("id-2","YpdNQhxKnATh6O9Pp4b/6GbDDcIcGh+UkTMQZpOyij4oNPsdOQbLGavfDSxSiuGS");
newMetadata.put("Content-Type","text");
newMetadata.put("x-amz-server-side-encryption-customer-algorithm","AES256");
String sKey="123456";
//String sEncryKey = ServiceUtils.toBase64(sKey.getBytes());
String sEncryKey = Base64.encodeBase64String(sKey.getBytes());
newMetadata.put("x-amz-server-side-encryption-customer-key",sEncryKey);
try {
//String sbased64MD5 = ServiceUtils.toBase64(ServiceUtils.computeMD5Hash(sKey.getBytes()));
String sbased64MD5=Base64.encodeBase64String(ServiceUtils.computeMD5Hash(new ByteArrayInputStream(sKey.getBytes())));
newMetadata.put("x-amz-server-side-encryption-customer-key-MD5",sbased64MD5);
} catch (Exception ex) {
}
try {
boolean bsuccess = objS3Copy.updateMeta("BucketName", "obj.JPG", newMetadata);
} catch (Exception ex) {
}
} catch (Exception ex) {
}
我的价值观是:对于键 123456
x-amz-server-side-encryption-customer-algorithm: AES256
x-amz-server-side-encryption-customer-key: MTIzNDU2
x-amz-server-side-encryption-customer-key-MD5: RTEwQURDMzk0OUJBNTlBQkJFNTZFMDU3RjIwRjg4M0U=
Ref:
http://www.base64decode.org/
http://www.convertstring.com/Hash/MD5
E10ADC3949BA59ABBE56E057F20F883E is MD5 of 123456
The calculated MD5 hash of the key did not match the hash that was provided.
用以下行更改注释行后..我的代码工作正常。
谢谢
【问题讨论】:
标签: encryption amazon-s3 amazon