2

我正在尝试使用 java 以与 S3 相同的方式生成访问密钥和密钥,但遇到了一些麻烦。

作为一个起点,我正在查看这个充气城堡示例,我已经启动并运行了这段代码,但我不确定两件事 1)如何设置它以使用与使用 HMAC-SHA1 的 s3 相同的密钥生成,如此所述2)如何为用户获取友好的公钥/私钥字符串。

您可能已经猜到我是 java 加密和充气城堡库的新手,但是我确实在 bc 文档中找到了 JCEKeyGenerator.HMACSHA1,但我无法找到它的使用示例。任何帮助将不胜感激。

谢谢。

4

1 回答 1

3

您需要使用javax.crypto.KeyGenerator来创建AWSAccessKeyIdAWSSecretAccessKey

javax.crypto.KeyGenerator generator = javax.crypto.KeyGenerator.getInstance("HMACSHA1");
generator.init(120);
byte[] awsAccessKeyId = generator.generateKey().getEncoded();
generator.init(240);
byte[] awsSecretAccessKey = generator.generateKey().getEncoded();

然后,您需要对字节进行 base64 编码(这使用来自 mail.jar 的 MimeUtility):

final ByteArrayOutputStream encoded = new ByteArrayOutputStream();
final OutputStream encoder = javax.mail.internet.MimeUtility.encode(encoded, "base64");
encoder.write(awsAccessKeyId);
encoder.flush();
encoder.close();
String accessKeyId = new String(encoded.toByteArray(), encoding).replaceAll("[\\r\\n]", "");
于 2011-07-23T03:26:38.870 回答