java - 如何使用java生成s3风格的访问/ key

标签 java amazon-s3 bouncycastle hmacsha1

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

作为起点,我正在查看这个 bouncy castle example ,我已经启动并运行了这段代码,但不确定两件事:1)如何将其设置为使用与 s3 相同的 key 生成,s3 使用 HMAC-SHA1,如 here 所述。 2)如何为用户获取友好的公钥/私钥字符串。

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

谢谢。

最佳答案

您需要使用 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]", "");

关于java - 如何使用java生成s3风格的访问/ key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6796284/

相关文章:

java - BouncycaSTLe PBEWITHSHA256AND256BITAES-CBC-BC Javascript 实现

java - 在 JDBC 中使用 SQL 查询对数据进行分组

java - 从字节数组创建字符串不会返回相同的长度

amazon-web-services - 如何使用 Glue 将多个 s3 文件合并为一个

java - 使用前缀、后缀或正则表达式在 S3 存储桶中搜索键?

c# - S3 请求时间太偏斜

java - 线程的默认命名约定

java - 使用 GWT 绘制边和节点的框架

java - 如何使用 AES 加密创建 Java Key Store (.jks) 文件

java - Java 和 Android 通用的库