如何使用java生成s3样式访问/秘密密钥
问题描述:
我想用与使用java的S3相同的方式生成访问密钥和密钥,但我遇到了一些麻烦。如何使用java生成s3样式访问/秘密密钥
作为一个起点,我在看这个bouncy castle example,我已经启动了这个代码,但我不确定两件事情1)如何设置它以使用与使用HMAC-SHA1的s3相同的密钥生成概述了here和2)如何为用户获取友好的公钥/私钥字符串。
您可能已经猜到我是java加密和弹性城堡库的新手,但是我在bc文档中找到了JCEKeyGenerator.HMACSHA1,但无法找到它的使用示例。任何帮助将不胜感激。
谢谢。
答
你需要利用javax.crypto.KeyGenerator
创建AWSAccessKeyId
和AWSSecretAccessKey
:
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编码的字节(这使用MimeUtility从的mail.jar):
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]", "");
谢谢,工作完美。 – mirswith