2011-07-22 142 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

相關問題