2011-07-22 97 views
1

我想用与使用java的S3相同的方式生成访问密钥和密钥,但我遇到了一些麻烦。如何使用java生成s3样式访问/秘密密钥

作为一个起点,我在看这个bouncy castle example,我已经启动了这个代码,但我不确定两件事情1)如何设置它以使用与使用HMAC-SHA1的s3相同的密钥生成概述了here和2)如何为用户获取友好的公钥/私钥字符串。

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

谢谢。

回答

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编码的字节(这使用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]", ""); 
+0

谢谢,工作完美。 – mirswith

相关问题